Некластерный индекс в столбце Кластерный индекс повышает производительность? - PullRequest
10 голосов
/ 03 сентября 2008

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

Почему некластеризованный индекс в том же столбце (с тем же порядком сортировки) будет быстрее кластерного индекса?

Ответы [ 3 ]

16 голосов
/ 03 сентября 2008

Кластерный индекс содержит все данные для таблицы, в то время как некластеризованный индекс имеет только столбец + местоположение кластеризованного индекса или строки, если он находится в куче (таблица без кластерного индекса). Поэтому, если вы выполняете подсчет (столбец), и этот столбец индексируется не кластеризованным индексом, SQL-сервер должен только сканировать некластеризованный индекс, который работает быстрее, чем кластерный индекс, потому что больше будет помещаться на страницах 8K

2 голосов
/ 03 сентября 2008

Я думаю, что это будет быстрее в тех случаях, когда вам не нужны полные данные строки, например, если вы просто проверяете, существует ли строка с данным идентификатором. Тогда кластеризованный индекс будет довольно большим, а небольшой «один столбец» будет намного тоньше.

0 голосов
/ 03 сентября 2008

Кластерный индекс обычно будет быстрее, но вы можете иметь только 1 кластерный индекс. Таким образом, если таблица уже имеет кластеризованный индекс в другом столбце, то некластеризованный индекс - лучшее, что вы можете сделать.

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