English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite базовый учебник

SQLite продвинутый учебник

SQLite программный интерфейс

Индекс SQLite

Индекс - это особый таблица поиска, которую можно использовать поисковому механизму базы данных для ускорения поиска данных. Кратко говоря, anindexЭто указатель на данные в таблице. Индексы в базе данных очень похожи на индексы в конце книги.

Например, если нужно сослаться на все страницы книги, обсуждающие определенную тему, сначала нужно обратиться к индексу, который по алфавиту перечисляет все темы, а затем сослаться на один или несколько конкретных страниц.

Индекс помогает ускорить выполнение запросов SELECT и WHERE, но замедляет ввод данных через операторы UPDATE и INSERT. Индексы можно создавать и удалять, не влияя на данные.

Создание индекса involves использование оператора CREATE INDEX, который позволяет вам назвать индекс, указать таблицу и столбцы, которые нужно индексировать, и указать, является ли индекс возрастающим или убывающим.

Индекс также может быть уникальным, подобно ограничению UNIQUE, так как индекс предотвращает наличие повторяющихся записей в столбце или комбинации столбцов, по которому создан индекс.

Команда CREATE INDEX

Вот основная грамматика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';

Команда DROP INDEX

Вы можете использовать SQLite DROPУдалите индекс командой. Будьте осторожны при удалении индекса, так как производительность может замедлиться или улучшиться.

Ниже приведен базовый синтаксис, например-

DROP INDEX index_name;

Вы можете использовать следующие предложения для удаления ранее созданных индексов.

sqlite> DROP INDEX salary_index;

Когда следует избегать индексов?

Хотя индексы предназначены для повышения производительности базы данных, иногда их следует избегать. Следующие правила указывают, когда следует пересмотреть использование индексов.

Индекс не может быть использован для-

  • Маленькие таблицы.

  • Таблицы с частыми, массовыми операциями по обновлению или вставке.

  • Столбцы с большим количеством NULL значений.

  • Часто используемые столбцы.