INDEX RANGE SCAN и INDEX SKIP SCAN. Чем эти методы индексного доступа разнятся?

dbstalker, 13 июля

INDEX RANGE SCAN - просмотр диапазона по индексу. Как оракл его выполняет? Для индекса на основе B* - дерева листовые блоки образуют двухсвязный список. Такая организация листовых блоков индекса при поиске позволяет не просматривать каждый раз всю индексную структуру сверху вниз, а достаточно спустившись один раз к необходимому начальному листовому блоку дальше двигаться по порядку только по листовым блокам.

Например, запрос select * from t where a between 10 and 100 с использованием метода INDEX RANGE SCAN выполняется легко и просто.

INDEX SKIP SCAN – поиск в индексе с пропусками. Такое сканирование используется в случаях, когда первый столбец составного индекса не входит в условия запроса. Другими словами, первый столбец пропускается (skipped) при выполнении этой операции.

Index Skip Scan использует разделение составного индекса на логические части (subindexes). Oracle определяет количество таких логических частей (subindexes) по числу неповторяющихся значений (distinct values) лидирующего столбца составного индекса. И если таких subindexes будет мало, оптимизатор предпочтет именно Index Skip Scan. Но если лидирующий столбец имеет много различных значений, то оптимизатор предпочтет TABLE FULL SCAN.

Например, запрос

SELECT * FROM таблица WHERE  столбец2 = 'строка' 

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

SELECT * FROM таблица WHERE столбец1=0 and  столбец2 = 'строка'
UNION ALL
SELECT * FROM таблица WHERE  столбец1=1 and столбец2 = 'строка'

Иными словами выполняется поиск значений нелидирующих столбцов методом INDEX RANGE SCAN по каждому subindexes.

ORACLE имеет скрытый параметр _optimizer_skip_scan_enabled. Если хотите отключить метод индексного доступа INDEX SKIP SCAN , то установите его в false:

alter session set "_optimizer_skip_scan_enabled"=false;

Просто на заметку:

index full scan - читается весь индекс в порядке сортировки строк в этом индексе.

index fast full scan - индекс используется как несортированная (heap) таблица.

Тэги: индексы

ОднаКнопка

 

Новый комментарий

Я не спамер: введите суму 4+9



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Расписание автобусов
18 июля, 3 ответа
Отдых в августе
17 июля, 4 ответа