Учебники

SQL — индексы

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

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

Индекс помогает ускорить запросы 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 в качестве фильтров часто используются два или более столбца, наилучшим выбором будет составной индекс.

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

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

Команда DROP INDEX

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

Основной синтаксис выглядит следующим образом —

DROP INDEX index_name;

Вы можете проверить главу INDEX Constraint, чтобы увидеть некоторые реальные примеры по индексам.

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

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

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

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

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

Индексы не должны использоваться для столбцов, которые содержат большое количество значений NULL.

Столбцы, которыми часто манипулируют, не должны индексироваться.