B⁺木インデックスが効く検索
出典: 平成30年度 秋期 応用情報技術者試験 午前 問29 (IPA)
“部品”表のメーカコード列に対し,B⁺木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列に NULL が設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。
部品(部品コード,部品名,メーカコード)
メーカ(メーカコード,メーカ名,住所)
(部品コード,メーカ表のメーカコードは実線の下線=主キー,部品表のメーカコードは破線の下線=外部キー)
- ア メーカコードの値が 1001 以外の部品を検索する。
- イ メーカコードの値が 1001 でも 4001 でもない部品を検索する。
- ウ メーカコードの値が 4001 以上,4003 以下の部品を検索する。
- エ メーカコードの値が NULL 以外の部品を検索する。
正解と解説を見る
正解: ウ
- ア: 1001 以外の部品はほとんど全ての行に当てはまるので、インデックスを使っても表を全部読むのと変わりません。
- イ: 1001 でも 4001 でもない部品も、ほとんど全ての行に当てはまるので効果がありません。
- ウ: 4001 以上 4003 以下という狭い範囲を検索するので、B⁺木インデックスで該当する行をすばやく絞り込めます。正しい答えです。
- エ: NULL 以外の部品は、ごく少数を除く全ての行なので効果がありません。
ポイント
- B⁺木インデックス は、値の順に並んでいるので、特定の値や範囲 (4001 以上 4003 以下など) を絞り込む検索 に効果があります。
- 「〜以外」や「NULL 以外」のように、該当する行がほとんど全部になる検索では、表を全部読むのと変わらないので効果がありません。