Почему этот SQL-запрос выполняет ключевой поиск?

У меня есть таблица User с кучей индексов. Один из них - уникальный индекс в столбце AccountIdentifier.

Поскольку это уникальный индекс, почему нужен ключевой поиск в дополнение к поиску индекса? Стрелка подсказки индекса сообщает, что возвращается только одна запись. Я также попытался преобразовать индекс в тип "уникальный ключ".

alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png

Ответы

Ответ 1

Потому что он выбирает *.

Он использует некластеризованный индекс для поиска строк (строк), но затем ему нужно идти и извлекать возвращаемые данные.

Чтобы избежать поиска поиска в закладке, вам нужно сделать индекс без кластеризации индексом покрытия (в идеале, уменьшив количество столбцов в select list, но также можно добавить новые столбцы в сам индекс или включенные столбцы)

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

Ответ 2

Поиск ключа не означает "искать ключ", а "искать строку на основе ключа".

Ответ 3

Смотрите эти статьи и сообщения в блогах для получения дополнительной информации о ключевых поисках/поиске по закладкам: