Некластерный индекс в столбце Кластерный индекс повышает производительность?

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

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

3 ответа

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

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

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

Другие вопросы по тегам