SQL: Что такое сканирование кластерного индекса, почему / когда оно используется? - PullRequest
2 голосов
/ 29 октября 2010

SQL Server 2008

При рассмотрении плана выполнения говорится, что сканирование кластерного индекса занимает 70%. Почему? Что это?

Ответы [ 4 ]

4 голосов
/ 29 октября 2010

Сканирование кластеризованного индекса показывает, что все строки кластеризованного индекса читаются.Как правило, он плохо работает с большими таблицами и часто указывает на необходимость дополнительной индексации или настройки запросов.

См. Также: Сканирование индекса кластера Оператор Showplan

2 голосов
/ 29 октября 2010

Скорее всего, он просматривает индекс первичного ключа, который по умолчанию кластеризован. Не совсем сканирование таблицы, но достаточно близко.

Проще говоря, вам не хватает индекса, соответствующего вашему предложению WHERE и включающего предложение SELECT.

Это также может произойти, когда вы делаете SELECT * FROM ..., потому что сканировать PK / кластерный индекс проще, чем использовать любой WHERE индекс + поиск ключа

Схема + запрос поможет.

1 голос
/ 29 октября 2010

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

Если вы получаете сканирование кластерного индекса и используете условие order by для какого-либо ключа, отличного от первичного ключа, скорее всего, вам не хватаетлучший показатель ...

1 голос
/ 29 октября 2010

Кластерный индекс - это специальный индекс в SQL Server, и это порядок, в котором SQL Server будет физически хранить данные на диске (следовательно, вы можете иметь только один кластерный индекс на таблицу, поскольку вы можете физически хранить его только одним способом.:)).

Итак, ваш SQL заставляет движок сканировать таблицу с использованием этого индекса.

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