ホーム > データベーススペシャリスト試験 > 2018年
データベーススペシャリスト試験 2018年 午前2 問15
木インデックスとビットマップインデックスを比較した説明のうち、適切なものはどれか。
ア:AND操作やOR操作だけで行える検索は、木インデックスの方が有効である。
イ:BETWEENを用いた範囲指定検索は、ビットマップインデックスの方が有効である。
ウ:NOTを用いた否定検索は、木インデックスの方が有効である。
エ:少数の異なる値をもつ列への検索は、ビットマップインデックスの方が有効である。(正解)
解説
B⁺木インデックスとビットマップインデックスの比較【午前2 解説】
要点まとめ
- 結論:少数の異なる値を持つ列にはビットマップインデックスが有効である。
- 根拠:ビットマップインデックスはビット演算で高速に集合演算ができ、低カーディナリティ列に適しているため。
- 差がつくポイント:カーディナリティ(列の異なる値の数)を理解し、適切なインデックス選択が性能向上に直結する点。
正解の理由
ビットマップインデックスは、列の値の種類が少ない(低カーディナリティ)場合に特に効果的です。これは、各値に対応するビットマップを作成し、ANDやORなどのビット演算で高速に検索条件を組み合わせられるためです。一方、B⁺木インデックスは範囲検索に強いですが、ビットマップインデックスのようにビット演算で複雑な条件を高速に処理することはできません。したがって、「少数の異なる値をもつ列への検索は、ビットマップインデックスの方が有効である」という選択肢エが正解です。
よくある誤解
ビットマップインデックスはすべての検索に有効と思いがちですが、実際には高カーディナリティの列では逆に効率が悪くなります。B⁺木インデックスは範囲検索に強いという点も混同されやすいです。
解法ステップ
- インデックスの種類(B⁺木、ビットマップ)と特徴を理解する。
- カーディナリティ(列の異なる値の数)を確認する。
- 低カーディナリティならビットマップインデックス、高カーディナリティならB⁺木インデックスが適切と判断。
- 問題文の条件に合致する選択肢を選ぶ。
選択肢別の誤答解説
- ア: ANDやOR操作はビットマップインデックスが得意であり、B⁺木インデックスが有効とは限らない。
- イ: BETWEENによる範囲検索はB⁺木インデックスが得意で、ビットマップインデックスは不向き。
- ウ: NOTを用いた否定検索もビットマップインデックスのビット反転で効率的に処理可能で、B⁺木インデックスが有効とは言えない。
- エ: 少数の異なる値をもつ列への検索は、ビットマップインデックスの方が有効である。
補足コラム
ビットマップインデックスは特にデータウェアハウスやOLAPシステムで多用されます。大量のデータに対して複雑な条件検索を高速に行うため、低カーディナリティの列に適用することで大幅な性能向上が期待できます。一方、B⁺木インデックスはトランザクション処理系のOLTPでの範囲検索や一意検索に適しています。
FAQ
Q: ビットマップインデックスはどんな場合に使うべきですか?
A: 列の値の種類が少なく、複数条件のANDやOR検索が多い場合に効果的です。
A: 列の値の種類が少なく、複数条件のANDやOR検索が多い場合に効果的です。
Q: B⁺木インデックスは範囲検索に強いのはなぜですか?
A: B⁺木は木構造で値が順序付けられているため、範囲内のデータを連続して効率的に探索できるからです。
A: B⁺木は木構造で値が順序付けられているため、範囲内のデータを連続して効率的に探索できるからです。
関連キーワード: B⁺木インデックス, ビットマップインデックス, カーディナリティ, 範囲検索, ビット演算, OLAP, OLTP