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

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

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

альтернативный текст http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png

Ответы [ 3 ]

17 голосов
/ 03 июля 2010

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

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

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

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

13 голосов
/ 03 июля 2010

Поиск ключа означает не «поиск ключа», а «поиск строки на основе ключа».

7 голосов
/ 03 июля 2010

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

...