2009-04-17 4 views
3

В чем разница между кластерным сканированием индексов и поиском кластеризованного индекса?Индексы SQL Server

ответ

2

Кластерный индекс SCAN сканирует весь кластерный индекс (= таблица данных) от начала до конца.

Clustered index SEEK только сканирует (надеюсь, малую) часть/раздел этого индекса -> намного быстрее!

Марк

+0

большое спасибо – Anoop

2

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

4

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

Сканирование с кластерным индексом происходит, когда предикат содержит столбцы, отличные от первичного ключа (и нет другого индекса, доступного для удовлетворения предиката).

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

1

попытка перемотать используется, когда условие соответствует индексированных данных, так что он может эффективно использовать индекс, например, в запросе, как:

select Name from Table where Group = 42 

Поскольку сравнение является прямым значением, оно может легко использовать для нахождения части индекса, где находятся элементы.

Сканирование используется, когда условие является более сложным, так что каждое значение индекса должно быть оценено, например, в запросе, как:

select Name from Table where right(cast(group as varchar), 2) = '00' 

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

Смежные вопросы