Сканирование индекса по первичному ключу (ID) - PullRequest
0 голосов
/ 08 марта 2020

Запрос

SELECT MAX(ID) FROM Product

https://www.brentozar.com/pastetheplan/?id=Skv5OqZBU

Почему оптимизатор использует сканирование индекса, даже если запрос основан на первичном ключе (ID)?

1 Ответ

0 голосов
/ 08 марта 2020

Если вы прочитаете подробности внутри узла «индексного сканирования» вашего плана, вы обнаружите, что он ожидает только 1 возвращенную строку. Сканирование на 1 строку с конца на самом деле имеет лучшую производительность, чем поиск по индексу.

Физическая структура индекса MS SQL представляет собой дерево B +. При поиске по индексу это означает, что вы начинаете с части дерева, чтобы найти элемент в O (log N). Сканирование индекса означает, что вы начинаете с части данных, чтобы найти элементы. На этот раз вы читаете один, так что это O (1).

Итак, ваш запрос на самом деле выполняется очень быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...