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

ビットマップインデックスとは?

データベースにおけるインデックス(索引)の一種で、各値に対して「0」と「1」のビット列を用いてデータの所在を管理するもの。各値に対応するビットの組み合わせにより検索対象を高速に絞り込み、特に値の種類が少ない列で効率的に動作する。
ビットマップインデックスのイメージ画像

この方式では、テーブル上のある列の各値ごとに1本のビット列ビットマップ)を用意する。例えば、「性別」列に「男」「女」という2種類の値があれば、「男」用と「女」用の2本のビットマップが作られる。各ビットマップは行数分の長さを持ち、その行に該当する値が入っていれば「1」、そうでなければ「0」が記録される。

この仕組みは値の種類(カーディナリティ)が少ない列の検索に効果的である。「都道府県」「血液型」「性別」のように、取りうる値が限られている場合、ビットマップインデックスは非常にコンパクトにまとまり、大量のデータを高速に検索できる。反対に、すべての行が一意の値を持つ主キーや、一意でなくても多様な値にばらけている列には向かない。

ビットマップインデックスが特に優れているのは、複数条件の組み合わせ検索である。「女性」かつ「A型」かつ「東京都在住」のような複合条件であっても、それぞれのビットマップに対してAND演算OR演算NOT演算といったビット演算を組み合わせて施すだけで該当行を特定できる。この演算はCPUが非常に得意とする処理であるため、高い検索性能が期待できる。

一方、データの追加・更新・削除が頻繁に発生するシステムとは相性が悪い。ビットマップを更新する際に排他制御が必要となり、並行処理の効率が低下するためである。このため、ビットマップインデックスは更新の少ないデータウェアハウスや分析系データベースOLAP)において積極的に活用される。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。