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