Индексы — это специальные таблицы поиска, которые поисковая система базы данных может использовать для ускорения поиска данных. Проще говоря, индекс — это указатель на данные в таблице. Индекс в базе данных очень похож на индекс в конце книги.
Например, если вы хотите сослаться на все страницы в книге, в которых обсуждается определенная тема, вы сначала обращаетесь к указателю, который перечисляет все темы в алфавитном порядке, а затем ссылается на один или несколько конкретных номеров страниц.
Индекс помогает ускорить запросы 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;
Когда следует избегать индексов?
Хотя индексы предназначены для повышения производительности базы данных, бывают случаи, когда их следует избегать. Следующие рекомендации указывают, когда следует пересмотреть использование индекса.
Индексы не должны использоваться в —