平成23年度 秋期 応用情報技術者試験 午前 問32
テクノロジ/データベース“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,メーカコードの値は均一に分散されているものとする。また,ごく少数の行には,メーカコード列に NULL が設定されている。
出典:平成23年度 秋期 応用情報技術者試験 午前 問32
- アメーカコードの値が1001以外の部品を検索する。
- イメーカコードの値が1001でも4001でもない部品を検索する。
- ウメーカコードの値が4001以上,4003以下の部品を検索する。
- エメーカコードの値が NULL 以外の部品を検索する。
正解:ウ
解説
B+木インデックスは,値が広い範囲に均一に分散しているキー列に対する範囲検索で効果を発揮します。「4001以上,4003以下」という連続した範囲検索はB+木の順序性を生かして効率よく絞り込めるため,最も性能改善が期待できます。否定条件やNULL以外という条件は,多くの行が該当しインデックスをうまく活用できません。
選択肢ごとの解説
- ア誤り。「1001以外」のような否定条件は,該当しない行を除いた大部分の行を検索することになり,インデックスの効果が薄くなります。
- イ誤り。「1001でも4001でもない」も否定条件であり,多くの行が該当するためインデックスによる絞込み効果が小さくなります。
- ウ正しい。「4001以上4003以下」という連続した範囲検索はB+木インデックスの順序性を活用でき,性能改善が最も期待できます。
- エ誤り。「NULL以外」という条件はほとんど全ての行が該当するため,インデックスによる絞込み効果はほとんどありません。