データベーススペシャリスト 2011年 午前2 問16
問題文
木インデックスとビットマップインデックスを比較した説明のうち、適切なものはどれか。
選択肢
ア:AND や OR 操作だけで行える検索は木インデックスの方が有効である。
イ:BETWEEN を用いた範囲指定検索はビットマップインデックスの方が有効である。
ウ:NOT を用いた否定検索は木インデックスの方が有効である。
エ:少数の異なる値をもつ列への検索はビットマップインデックスの方が有効である。(正解)
B⁺木インデックスとビットマップインデックスの比較【午前2 解説】
要点まとめ
- 結論:少数の異なる値を持つ列にはビットマップインデックスが有効である。
- 根拠:ビットマップインデックスは値ごとにビット列を持ち、低カーディナリティ列の検索に強い。
- 差がつくポイント:範囲検索や論理演算の適用範囲を理解し、インデックスの特性を正しく使い分けることが重要。
正解の理由
ビットマップインデックスは、値の種類(カーディナリティ)が少ない列に適しています。各値に対応するビットマップを持ち、AND・OR・NOTなどの論理演算が高速に行えます。これにより、少数の異なる値を持つ列の検索が効率的に行えます。一方、B⁺木インデックスは範囲検索に強いですが、ビットマップインデックスほど論理演算に適していません。したがって、「少数の異なる値をもつ列への検索はビットマップインデックスの方が有効である」が正解です。
よくある誤解
ビットマップインデックスはすべての検索に有効と思われがちですが、値の種類が多い列では逆に非効率になります。B⁺木インデックスは範囲検索に強いことを忘れないようにしましょう。
解法ステップ
- インデックスの種類(B⁺木・ビットマップ)の特徴を理解する。
- ビットマップインデックスは低カーディナリティ(少数の異なる値)に強いことを確認。
- B⁺木インデックスは範囲検索に適していることを把握。
- 各選択肢の内容をインデックスの特性と照らし合わせる。
- 最も適切な説明を選ぶ。
選択肢別の誤答解説
- ア: ANDやOR操作はビットマップインデックスが得意であり、B⁺木インデックスは範囲検索に強い。
- イ: BETWEENによる範囲指定検索はB⁺木インデックスの方が有効で、ビットマップは不向き。
- ウ: NOTを用いた否定検索はビットマップインデックスが高速に処理可能で、B⁺木は苦手。
- エ: 少数の異なる値を持つ列への検索はビットマップインデックスが有効で正解。
補足コラム
ビットマップインデックスは論理演算が高速なため、複数条件の組み合わせ検索に強みがあります。ただし、値の種類が多い(高カーディナリティ)列ではビットマップのサイズが膨大になり、逆にパフォーマンスが低下します。B⁺木インデックスはツリー構造で範囲検索や順序付けに適しており、一般的な数値や文字列の索引に広く使われています。
FAQ
Q: ビットマップインデックスはどんな場合に使うべきですか?
A: 少数の異なる値(例:性別、フラグなど)を持つ列で、複数条件のAND・OR検索が多い場合に有効です。
A: 少数の異なる値(例:性別、フラグなど)を持つ列で、複数条件のAND・OR検索が多い場合に有効です。
Q: B⁺木インデックスは範囲検索以外にどんな特徴がありますか?
A: 順序付けされたデータの高速な挿入・削除・検索が可能で、一般的なキー検索に適しています。
A: 順序付けされたデータの高速な挿入・削除・検索が可能で、一般的なキー検索に適しています。
関連キーワード: B⁺木インデックス、ビットマップインデックス、低カーディナリティ、範囲検索、論理演算、インデックス選択

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

