Индексы
247
дой из 24 строк таблицы
account
. Таким образом,
если серверу делается
запрос на извлечение всех депозитных счетов денежного рынка (
prod
uct_cd
=
'MM'
), он просто находит все значения
1
в битовой карте
MM
и возвращает строки 7, 10 и 18. Если требуется
найти несколько значе
ний, сервер также может комбинировать битовые карты. Например,
если пользователь хочет получить все депозитные счета денежного
рынка
и
сберегательные счета (
product_cd
=
'MM'
или
product_cd
=
'SAV'
),
сервер может осуществить
для битовых карт
MM
и
SAV
операцию OR
(ИЛИ) и возвратит строки 2, 5, 7, 9, 10, 16 и 18.
Битовые индексы – милое компактное решение по индексации данных
с малым кардинальным числом. Однако эта стратегия не годится, если
число хранящихся в столбце значений
слишком велико по сравнению
с числом строк (в таком случае говорят о данных с
большим кардиналь
ным числом
(
highcardinality
)), потому
что серверу пришлось бы об
служивать слишком много битовых карт. Например, не следует созда
вать битовый индекс
для столбца первичного ключа, поскольку он яв
ляется примером максимально возможного количества элементов (но
вое значение для каждой строки).
Пользователи Oracle могут формировать битовые индексы,
просто до
бавляя ключевое слово
bitmap
в выражение
create
index
:
CREATE BITMAP INDEX acc_prod_idx ON account (product_cd);
Битовые индексы широко используются в
информационных хранили
щах, где обычно индексируются большие объемы данных для столбцов,
содержащих относительно небольшое количество значений (например,
квартальные отчеты, географические регионы, продукты, продавцы).
Достарыңызбен бөлісу: