Создание некластеризованных индексов
Можно создавать несколько некластеризованных индексов для таблицы или индексированного представления. Обычно некластеризованные индексы создаются с целью повышения производительности часто используемых запросов, не входящих в кластеризованный индекс.
Типичная реализация
Некластеризованные индексы реализуются следующим образом.
- Ограничения PRIMARY KEY и UNIQUE
Если кластерный индекс в таблице еще не создан, а уникальный некластеризованный индекс еще не указан, то при создании ограничения PRIMARY KEY в одном или нескольких столбцах автоматически создается уникальный кластеризованный индекс. В столбце первичного ключа недопустимы значения NULL.
При создании ограничения UNIQUE создается уникальный некластеризованный индекс. Он нужен, чтобы принудительно применять ограничение UNIQUE по умолчанию. Если кластеризованный индекс в таблице еще не создан, то можно указать уникальный кластеризованный индекс. Дополнительные сведения см. в разделах Ограничения PRIMARY KEY и Ограничения UNIQUE. - Индекс, не зависящий от ограничения
По умолчанию некластеризованный индекс создается в том случае, если ранее не был задан кластеризованный индекс. В каждой таблице можно создать не более 249 некластеризованных индексов. К ним относятся индексы, созданные с помощью ограничений UNIQUE или PRIMARY и не содержащие XML-индексы. - Некластеризованный индекс в индексированном представлении
Некластеризованные индексы в представлении могут создаваться только после создания в нем уникального кластеризованного индекса. Дополнительные сведения см. в разделе Создание индексированных представлений.
Индекс с включенными столбцами
При создании некластеризованного индекса с целью описания запроса в его определение можно включать неключевые столбцы, предназначенные для описания столбцов, которые не используются в первичном поиске. Повышение производительности достигается за счет сужения круга поиска. Оптимизатор запросов позволяет обнаружить все необходимые данные внутри индекса, не обращаясь при этом к таблице или кластеризованному индексу. Дополнительные сведения см. в разделе Индекс с включенными столбцами.
Требования к свободному месту на диске
Дополнительные сведения о требованиях свободного места на диске при использовании некластеризованных индексов см. в разделе Определение требований к месту на диске для индексов.
Вопросы производительности
Несмотря на то, что необходимо включать в индекс все столбцы, используемые запросом, следует избегать добавления лишних столбцов. Добавление слишком большого количества столбцов, как ключевых, так и неключевых, может привести к снижению производительности, проявляющемуся следующим образом.
- Снижение количества индексированных строк, располагающихся на странице памяти, приводящее к увеличению операций ввода-вывода и, следовательно, к снижению эффективности работы кэша.
- Увеличение места на диске, требуемого для хранения индекса.
- Увеличение времени, требуемого на модификацию таблицы или индексированного представления (для операций вставки, обновления и удаления).
Необходимо сопоставить полученное увеличение производительности обработки запросов с потерями производительности при изменении данных и увеличением требуемого места на диске. Дополнительные сведения об оценке производительности при выполнении запросов см. в разделе Настройка запроса.
Создание ограничения PRIMARY KEY или UNIQUE при создании таблицы
Создание ограничения PRIMARY KEY или UNIQUE в существующей таблице
Создание индекса
См. также
Основные понятия
Создание индексов (компонент Database Engine)
Правила проектирования некластеризованных индексов