Почему этот SQL-запрос выполняет ключевой поиск?
У меня есть таблица User с кучей индексов. Один из них - уникальный индекс в столбце AccountIdentifier.
Поскольку это уникальный индекс, почему нужен ключевой поиск в дополнение к поиску индекса? Стрелка подсказки индекса сообщает, что возвращается только одна запись. Я также попытался преобразовать индекс в тип "уникальный ключ".
alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png
Ответы
Ответ 1
Потому что он выбирает *
.
Он использует некластеризованный индекс для поиска строк (строк), но затем ему нужно идти и извлекать возвращаемые данные.
Чтобы избежать поиска поиска в закладке, вам нужно сделать индекс без кластеризации индексом покрытия (в идеале, уменьшив количество столбцов в select list, но также можно добавить новые столбцы в сам индекс или включенные столбцы)
Если у вас есть кластерный индекс в таблице, то локатор строк в некластеризованном индексе будет включать кластерный индексный ключ, поэтому ему не потребуется поиск по закладкам для удовлетворения запросов только в столбцах AccountIdentifier
и кластеризованных индексов.
Ответ 2
Поиск ключа не означает "искать ключ", а "искать строку на основе ключа".
Ответ 3
Смотрите эти статьи и сообщения в блогах для получения дополнительной информации о ключевых поисках/поиске по закладкам: