【びっとまっぷいんでっくす】
ビットマップインデックス とは?
最終更新:
💡 0と1のチェック表を重ねて、条件に合う行を探す索引
列の値ごとに、どの行が該当するかを0と1のビット列で表す索引。ビット演算で複数の検索条件を組み合わせられ、分析用途などで使われる。
📌 このページのポイント
- 同じ値に該当する行を1、該当しない行を0で表す
- ANDやORのビット演算で、複数条件の該当行を組み合わせる
- 値の種類が行数に比べて少なく、更新が少ない列が代表的な候補
- 更新時のロックや圧縮方法は実装によって異なり、常に最速とは限らない
ビットマップインデックスって、普通のインデックスと何が違うの?
そのチェック表をどう使うの?
『東京』の行が1・2・5行目なら11001。発送済みの10101とANDを取ると10001だから、両方に当てはまる1・5行目が分かるね。ORなら、どちらかの条件に合う行を集められるよ。
じゃあ全部の列に使えばいい?
値の種類が少なく、読み取り中心の列が代表的な候補だよ。ほぼ全行で値が異なる列はB-treeの方が適する場合がある。索引の圧縮方法やデータの分布、実際の検索条件も比べて選ぶんだ。
どんなシステムで使われるの?
Oracle Databaseにはこの索引があり、データウェアハウスの分析などで使われるよ。複数条件をビット列で絞り込んでから必要な行にアクセスできる。ただし、何百万行でも必ず一瞬で終わるという保証はないんだ。
更新が多いと困るの?
まとめ:ざっくりこれだけ覚えればOK!
「ビットマップインデックス」って出てきたら「行の該当・非該当をビット列にして検索する索引」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bitmap Index」 = ビットマップ索引
💬 Bitmap(ビットの地図)をインデックスに使うから、そのままの名前だよ