Учебники

T-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 INDEX singlecolumnindex 
ON customers (ID)

Уникальные индексы

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

Синтаксис

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

пример

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Композитные индексы

Составной индекс — это индекс двух или более столбцов таблицы. Ниже приведен основной синтаксис.

Синтаксис

CREATE INDEX index_name on table_name (column1, column2) 

пример

CREATE INDEX compositeindex 
on customers (NAME, ID)

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

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

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

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

Команда DROP INDEX

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

Синтаксис

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

DROP INDEX tablename.index_name

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

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

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

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

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

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