English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Индекс - это особый таблица поиска, которую можно использовать поисковому механизму базы данных для ускорения поиска данных. Кратко говоря, anindexЭто указатель на данные в таблице. Индексы в базе данных очень похожи на индексы в конце книги.
Например, если нужно сослаться на все страницы книги, обсуждающие определенную тему, сначала нужно обратиться к индексу, который по алфавиту перечисляет все темы, а затем сослаться на один или несколько конкретных страниц.
Индекс помогает ускорить выполнение запросов SELECT и WHERE, но замедляет ввод данных через операторы UPDATE и INSERT. Индексы можно создавать и удалять, не влияя на данные.
Создание индекса involves использование оператора CREATE INDEX, который позволяет вам назвать индекс, указать таблицу и столбцы, которые нужно индексировать, и указать, является ли индекс возрастающим или убывающим.
Индекс также может быть уникальным, подобно ограничению UNIQUE, так как индекс предотвращает наличие повторяющихся записей в столбце или комбинации столбцов, по которому создан индекс.
Вот основная грамматикаCREATE INDEX.
CREATE INDEX index_name ON table_name;
Одностолбцовый индекс является индексом, созданным на основе одного столбца таблицы. Основная грамматика такая:
CREATE INDEX index_name ON table_name (column_name);
Уникальные индексы используются не только для повышения производительности, но и для обеспечения целостности данных. Уникальные индексы не позволяют вставлять повторяющиеся значения в таблицу. Основная грамматика такая:
CREATE UNIQUE INDEX index_name ON table_name (column_name);
Комбинированный индекс является индексом для двух или более столбцов таблицы. Основная грамматика такая:
CREATE INDEX index_name ON table_name (column1, column2);
При создании как одностолбцового, так и комбинированного индекса, учитывайте, что column(s) может быть очень часто использован в WHERE-подзадаче в качестве условия фильтрации.
Если используется только один столбец, то следует выбрать индекс на один столбец. Если в подзадаче WHERE часто используются два или более столбцов в качестве фильтра, то комбинированный индекс будет лучшим выбором.
Имплицитные индексы создаются автоматически сервером базы данных при создании объекта. Автоматически создаются индексы для основного ключа и уникальных ограничений.
Пример
Вот пример, где мы создадим индекс для столбца заработной платы в таблице COMPANY:
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
Теперь, давайте используем следующее.indicesКоманда выводит все доступные индексы в таблице COMPANY:
sqlite> .indices COMPANY
Это будет следующим результатом, гдеsqlite_autoindex_COMPANY_1Это имплицитный индекс,ЭтаФормальный индекс создается при создании таблицы本身.
salary_indexsqlite_autoindex_COMPANY_1
Вы можете перечислить все индексы базы данных, например:
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';
Вы можете использовать SQLite DROPУдалите индекс командой. Будьте осторожны при удалении индекса, так как производительность может замедлиться или улучшиться.
Ниже приведен базовый синтаксис, например-
DROP INDEX index_name;
Вы можете использовать следующие предложения для удаления ранее созданных индексов.
sqlite> DROP INDEX salary_index;
Хотя индексы предназначены для повышения производительности базы данных, иногда их следует избегать. Следующие правила указывают, когда следует пересмотреть использование индексов.
Индекс не может быть использован для-
Маленькие таблицы.
Таблицы с частыми, массовыми операциями по обновлению или вставке.
Столбцы с большим количеством NULL значений.
Часто используемые столбцы.