解説
B+木インデックスとビットマップインデックスの比較【午前2 解説】
要点まとめ
- 結論:少数の異なる値を持つ列にはビットマップインデックスが有効である。
- 根拠:ビットマップインデックスは値ごとにビット列を持ち、少ない異なる値で効率的に検索できるため。
- 差がつくポイント:範囲検索や論理演算の適用範囲を理解し、適切なインデックス選択が重要である。
正解の理由
ビットマップインデックスは、列の値の種類が少ない(低カーディナリティ)場合に特に効果的です。各値に対応するビットマップを用いて高速に論理演算が可能で、少数の異なる値を持つ列の検索に適しています。B+木インデックスは範囲検索に強いですが、値の種類が少ない場合はビットマップの方が効率的です。したがって、「少数の異なる値をもつ列への検索はビットマップインデックスの方が有効である」が正解です。
よくある誤解
ビットマップインデックスはすべての検索に万能と思われがちですが、値の種類が多い場合は逆に非効率になります。B+木インデックスは範囲検索に強いことを忘れないようにしましょう。
解法ステップ
- インデックスの特徴を理解する(B+木は範囲検索向き、ビットマップは低カーディナリティ向き)。
- 問題文の条件(少数の異なる値)に注目する。
- 各選択肢の内容とインデックスの特徴を照合する。
- 範囲検索や論理演算の適用範囲を考慮し、最も適切な選択肢を選ぶ。
選択肢別の誤答解説
- ア: B+木インデックスは範囲検索に強いが、ANDやOR操作はビットマップインデックスの方が高速に処理できる場合が多い。
- イ: BETWEENを用いた範囲指定検索はB+木インデックスが得意であり、ビットマップインデックスは範囲検索に不向き。
- ウ: NOTを用いた否定検索はビットマップインデックスの論理演算で効率的に処理可能で、B+木インデックスは不向き。
- エ: 少数の異なる値をもつ列への検索はビットマップインデックスの方が有効である。
補足コラム
ビットマップインデックスは、特にデータウェアハウスやOLAP環境で多用されます。値の種類が少ない列(性別やフラグなど)に対して高速な論理演算を実現し、大量データの集計処理を効率化します。一方、B+木インデックスはOLTP環境での範囲検索や順序付けに強みがあります。
FAQ
Q: ビットマップインデックスはどんな場合に不利ですか?
A: 値の種類が多い(高カーディナリティ)列ではビットマップインデックスのサイズが大きくなり、性能が低下します。
Q: B+木インデックスはどんな検索に向いていますか?
A: 範囲検索や順序付けが必要な検索に向いており、値の種類が多い列に適しています。
関連キーワード: B+木インデックス, ビットマップインデックス, 低カーディナリティ, 範囲検索, 論理演算, インデックス選択