Учебники

SQLite — индексы

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

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

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

Создание индекса включает в себя инструкцию 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);

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

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

Неявные индексы

Неявные индексы — это индексы, которые автоматически создаются сервером базы данных при создании объекта. Индексы автоматически создаются для ограничений первичного ключа и уникальных ограничений.

пример

Ниже приведен пример, где мы создадим индекс в таблице COMPANY для столбца зарплаты —

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Теперь давайте перечислим все индексы, доступные в таблице COMPANY, с помощью команды .indices следующим образом:

sqlite> .indices COMPANY

Это приведет к следующему результату, где sqlite_autoindex_COMPANY_1 является неявным индексом, который был создан при создании самой таблицы.

salary_index
sqlite_autoindex_COMPANY_1

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

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

Команда DROP INDEX

Индекс можно удалить с помощью команды SQLite DROP . При отбрасывании индекса следует соблюдать осторожность, поскольку производительность может быть замедлена или улучшена.

Ниже приведен основной синтаксис:

DROP INDEX index_name;

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

sqlite> DROP INDEX salary_index;

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

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

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