Изучаем sql


Рис. 13.1.  Пример сбалансированного дерева 246



Pdf көрінісі
бет216/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   212   213   214   215   216   217   218   219   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Рис. 13.1.
 Пример сбалансированного дерева


246
Глава 13. Индексы и ограничения
При вставке, обновлении и удалении данных таблицы 
employee
сервер
будет стараться сохранять сбалансированность дерева, чтобы количе
ство узлов/листьев с одной стороны корневого узла не сильно превы
шало количество узлов с другой стороны. Сервер может добавлять или
удалять узлы, чтобы более равномерно перераспределять значения. Он
даже может добавить или удалить целый уровень узлов. Поддерживая
дерево сбалансированным, сервер может быстро перемещаться к листь
ям и находить нужные значения без навигации по множеству уровней
узлов.
Битовые индексы
Индексы на основе Вдерева замечательно подходят для обработки
столбцов, содержащих много разных значений, таких как имена/фа
милии клиентов, но они могут стать громоздкими для столбца с неболь
шим количеством значений. Например, принято решение сформиро
вать индекс для столбца 
account.product_cd
, чтобы обеспечить быстрый
выбор всех счетов определенного типа (например, текущих, сберега
тельных). Однако есть всего восемь разных типов счетов, и некоторые
из них встречаются гораздо чаще остальных. Поэтому по мере роста ко
личества счетов могут возникнуть сложности с обеспечением сбаланси
рованности индекса на основе Вдерева.
Для столбцов, содержащих небольшое количество значений при боль
шом числе строк (это известно как данные 
с малым кардинальным чис
лом 
(
lowcardinality
)), необходима другая стратегия индексации. Что
бы обработать эту ситуацию с большей эффективностью, Oracle Data
base включает 
битовые индексы 
(
bitmap indexes
), которые формируют
битовый образ каждого значения, хранящегося в столбце. На рис. 13.2
показано, как может выглядеть битовый индекс для данных столбца
account.product_cd
.
Этот индекс содержит шесть битовых карт, по одной для каждого зна
чения столбца 
product_cd
(два из восьми доступных типов счетов не ис
пользуются). Каждая битовая карта включает значение 0/1 для каж
Value/row
BUS
CD
CHK
MM
SAV
SBL
1
0
0
1
0
0
0
2 3 4 5 6 7 8 9 10
12
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
11
13 14 15 16 17 18 19 20 21 22 23 24
0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0
0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0
0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1


Достарыңызбен бөлісу:
1   ...   212   213   214   215   216   217   218   219   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет