2016-08-30 3 views
2

У меня есть запрос и проверка плана выполнения в SQL Management Studio. Некоторые некластеризованные шаги сканирования индекса возвращают столбец PK таблицы вместо индексированного и объединенного столбца. Пример:Неиспользуемый столбец в плане выполнения MS SQL

select a.c10, b.c20 
from a inner join b on a.c11 = b.c21 
where a.c12 = 23 

индекс по таблице: с

create unique nonclustered index ix_a_1 on a (a.c12 asc) include (a.c13, a.c14) 

план запроса показывает:

index seek, nonclustered, ix_a_1 , output list: a.primary_key_col 

В столбце a.primary_key_col не используется в запросе. Почему это единственный столбец, включенный в выходной список?

ответ

6

Столбец PK необходим для поиска кластерного индекса (предполагаемого PK) для получения столбцов c10 и c11. Это известно как «ключ поиска»

Вы можете удалить это путем или изменения некластерный индекс так что «покрытие»

Попробуйте

create nonclustered index ix_a_gbn on a (c12, c11) include (c10, c13, c14) 

Some background reading from Simple Talke via Google

Смежные вопросы