Bitmap-индексы
Bitmap-индексы — не новинка OracleS. Они присутствовали и в Oracle?, правда, появились там недавно. Поскольку эти индексы являются все-таки относительно новой особенностью Oracle и основная область их применения — индексация очень больших таблиц, мы рассмотрим их в данном разделе.
Несмотря на то, что надежная и эффективная реализация bitmap-индексов потребовала усилий, по своей концепции они очень просты. В таком индексе каждому отличающемуся значению ключа соответствует битовая карта (bitmap), в которой для каждой строки таблицы выделен 1 бит. Если этот бит установлен в 1, строка содержит данное ключевое значение; если бит равен 0, его в строке нет. Чего уж проще?
Давайте представим возможные наборы элементов bitmap-индексов по цвету волос и глаз, которые могут присутствовать в таблице, содержащей сведения о людях.
Цвет волос       Битовая карта
Black	0000001000000100000001000 Dark Brown 1 1 1001000010000101000001 1 Light Brown 0001000010010000100000000 Gray 0000100000001000000100100 Blonde____0000000101000010000010000
Поскольку мы определили в этой небольшой популяции (25 человек) всего пять цветов волос, то в нашем индексе присутствует пять битовых карт. Нельзя сказать, что это единственно возможные значения — битовая карта для конкретного значения ключа создается после того, как данное значение обнаружено в таблице. Следовательно, в результате операции INSERT или UPDATE может возникнуть необходимость построить новую битовую карту. Аналогичным образом в результате операции DELETE или UPDATE над таблицей битовая карта может стать лишней.
Чтобы не усложнять пример, мы включили в bitmap-индекс только четыре цвета для глаз.
Цвет глаз	Битовая карта
Black	1000000001000000000100010
Brown	010010001001 1010010010001
Blue	0001000100000100000000000
Green	0010001000100001101001100
80	OraclcS