Skip to content

30. Индексы Transact SQL

Pandas edited this page Jan 2, 2018 · 1 revision

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

Индекс может создаваться на одном или нескольких столбцах. Это означает, что индексы бывают простыми и составными. Если в таблице нет индекса, то поиск нужных строк выполняется простым сканированием по всей таблице. При наличии индекса время поиска нужных строк можно существенно уменьшить. К недостаткам индексов следует отнести:

  1. дополнительное место на диске и в оперативной памяти,
  2. замедляются операции вставки, обновления и удаления записей.

Создание индекса

CREATE INDEX CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX имя- индекса
ON имя-таблицы-или-представления ( список-столбцов ) [ INCLUDE (список-столбцов) ]
[WITH список-опций]
[ ON файловая-группа ]

Кластерные индексы

В кластерном индексе таблица представляет собой часть индекса, или индекс представляет собой часть таблицы в зависимости от вашей точки зрения. Листовой узел кластерного индекса – это страница таблицы с данными. Поскольку сами данные таблицы являются частью индекса, для таблицы может быть создан только один кластерный индекс. В SQL Server кластерный индекс является уникальным индексом по определению.

Некластерные индексы на основе кучи

В листьях некластерного индекса на основе кучи хранятся указатели на строки данных. Указатель строится на основе идентификатора файла (ID), номера страницы и номера строки на странице. Весь указатель целиком называется идентификатором строки (RID).

Некластерные индексы, основанные на кластерных таблицах

В листьях некластерного индекса, основанного на кластерных таблицах, хранятся указатели на корневые узлы кластерных индексов. Поиск в таком индексе состоит из двух этапов:

  1. поиск в некластерном индексе
  2. поиск в кластерном индексе.

Индексы, создаваемые вместе с ограничениям

Такой тип индексов часто называют «связанными индексами». Связанные индексы создаются при добавлении одного из следующих двух типов ограничений:

  • ограничения первичного ключа (PRIMARY KEY);
  • ограничения уникальности (UNIQUE).
Clone this wiki locally