ホーム > データベーススペシャリスト試験 > 2013年
データベーススペシャリスト試験 2013年 午前2 問15
木インデックスとビットマップインデックスを比較した説明のうち、適切なものはどれか。
ア:ANDやOR操作だけで行える検索は木インデックスの方が有効である。
イ:BETWEENを用いた範囲指定検索はビットマップインデックスの方が有効である。
ウ:NOTを用いた否定検索は木インデックスの方が有効である。
エ:少数の異なる値をもつ列への検索はビットマップインデックスの方が有効である。(正解)
解説
解説:木インデックスとビットマップインデックスの比較
データベースのインデックスには様々な種類がありますが、特に木インデックスとビットマップインデックスはそれぞれ異なる特徴と長所を持っています。ここでは、問題の選択肢を踏まえて両者の違いとそれが検索に与える影響について詳しく解説します。
1. 木インデックスの特徴
- 構造:木は、平衡木の一種で複数のキーを持つノードで構成されている。
- 向いている検索:等価検索だけでなく、**範囲検索(BETWEEN句など)**にも非常に効率良い。
- 利点:
- キーの大小関係が保持されているので、順序付けられたデータの探索が高速。
- 範囲検索や範囲更新操作に向いている。
2. ビットマップインデックスの特徴
- 構造:列の各値に対応するビットマップ(ビット列)を用いている。例えば値Aを持つ行は1、それ以外は0が立つ。
- 向いている検索:
- **低いカーディナリティ(異なる値が少ない列)**に非常に有効。
- AND、OR、NOTなどの論理演算がビット演算で高速に行える。
- 利点:
- カードが少ない場合、複数条件の組み合わせによる複雑なクエリの処理が高速。
- ストレージ効率が良く、集約的なクエリ処理に強い。
3. 選択肢の評価
4. なぜ「エ」が正解なのか
ビットマップインデックスは、同じ値が多く存在する列(つまりカーディナリティが低い列)に適しています。これは各値に対応するビットマップが小さく済み、かつ論理演算が高速なので、複数条件の組み合わせ検索も容易に行えるためです。
反対に、木は値の種類が多い列(高カーディナリティ)向けで、範囲検索や挿入・削除操作に強みがあります。
まとめ
- ビットマップインデックスは少数の異なる値を持つ列(低カーディナリティ)に適している。
- 範囲検索・範囲指定には木が有効。
- 論理演算(AND, OR, NOT)はビットマップインデックスが強い。
これらの理由から選択肢「エ」が正解です。