Включить предложение для создания индекса - PullRequest
2 голосов
/ 30 июня 2011

Могу ли я узнать, как предложение include улучшает производительность в индексе покрытия?

CREATE NONCLUSTERED INDEX includeIndex
  ON mytable(COL1)
  INCLUDE(COL2,COL3,COL3)

и в чем разница между

CREATE NONCLUSTERED INDEX includeIndex ON mytable(COL1) INCLUDE(COL2,COL3,COL3)

и

CREATE NONCLUSTERED INDEX nonincludeIndex ON mytable(COL1,COL2,COL3,COL3)

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

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

Это могут быть типы данных, недопустимые в качестве столбцов ключа индекса.

Они не учитываются компонентом Database Engine при расчете количества столбцов ключа индекса или размера ключа индекса.

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

http://msdn.microsoft.com/en-us/library/ms190806.aspx

1 голос
/ 30 июня 2011

Если ваш запрос только запрашивает поля в индексе (включая включенные поля), то после нахождения строк, возвращаемых процессором sql, не нужно загружать фактическую страницу данных для получения данных. Так просто. Он может ответить на запрос только из индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...