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

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

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

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


person BC.    schedule 03.07.2010    source источник
comment
В качестве отступления: никогда не выполняйте SELECT * в производственной системе — НИКОГДА — без исключений. Это плохая практика для начала....   -  person marc_s    schedule 03.07.2010


Ответы (3)


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

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

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

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

person Martin Smith    schedule 03.07.2010
comment
Я провел несколько экспериментов. Таким образом, может показаться, что выбор чего-либо, не входящего в используемый индекс, приводит к поиску ключа. Это имеет смысл. - person BC.; 03.07.2010
comment
@BC - В основном да, но если у вас есть кластеризованный индекс, вы можете считать, что эти столбцы включаются автоматически. - person Martin Smith; 03.07.2010

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

person erikkallen    schedule 03.07.2010

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

person marc_s    schedule 03.07.2010