ビットマップインデックス【bitmap index】
ビットマップインデックスとは?

この方式では、テーブル上のある列の各値ごとに1本のビット列(ビットマップ)を用意する。例えば、「性別」列に「男」「女」という2種類の値があれば、「男」用と「女」用の2本のビットマップが作られる。各ビットマップは行数分の長さを持ち、その行に該当する値が入っていれば「1」、そうでなければ「0」が記録される。
この仕組みは値の種類(カーディナリティ)が少ない列の検索に効果的である。「都道府県」「血液型」「性別」のように、取りうる値が限られている場合、ビットマップインデックスは非常にコンパクトにまとまり、大量のデータを高速に検索できる。反対に、すべての行が一意の値を持つ主キーや、一意でなくても多様な値にばらけている列には向かない。
ビットマップインデックスが特に優れているのは、複数条件の組み合わせ検索である。「女性」かつ「A型」かつ「東京都在住」のような複合条件であっても、それぞれのビットマップに対してAND演算、OR演算、NOT演算といったビット演算を組み合わせて施すだけで該当行を特定できる。この演算はCPUが非常に得意とする処理であるため、高い検索性能が期待できる。
一方、データの追加・更新・削除が頻繁に発生するシステムとは相性が悪い。ビットマップを更新する際に排他制御が必要となり、並行処理の効率が低下するためである。このため、ビットマップインデックスは更新の少ないデータウェアハウスや分析系データベース(OLAP)において積極的に活用される。