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