平成29年度 春期 応用情報技術者試験 午前 問28
テクノロジ/データベース“部品”表のメーカコード列に対し,B⁺木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列にNULLが設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。 部品(部品コード,部品名,メーカコード) ※部品コードが主キー,メーカコードが外部キー メーカ(メーカコード,メーカ名,住所) ※メーカコードが主キー

出典:平成29年度 春期 応用情報技術者試験 午前 問28
- アメーカコードの値が1001以外の部品を検索する。
- イメーカコードの値が1001でも4001でもない部品を検索する。
- ウメーカコードの値が4001以上,4003以下の部品を検索する。
- エメーカコードの値がNULL以外の部品を検索する。
正解:ウ
解説
メーカコード列の値が均一に分散し種類も十分にあるため,B⁺木インデックスは値の範囲を指定する検索(範囲検索)や特定の値を指定する等価検索で効果を発揮します。4001以上4003以下という範囲検索は,インデックスの木構造をたどって該当範囲の葉ノードへ効率的に到達できるため,性能改善が最も期待できます。
選択肢ごとの解説
- ア誤り。「1001以外」という否定条件は,該当しない値以外の大半の行を検索することになり,インデックスを使った絞り込みの効果はほとんど期待できません。
- イ誤り。「1001でも4001でもない」という否定条件も同様に大半の行が対象となり,インデックスによる絞り込み効果は限定的です。
- ウ正しい。「4001以上4003以下」という範囲検索は,B⁺木インデックスの構造を生かして該当範囲だけを効率的に絞り込めます。
- エ誤り。メーカコードにNULLが設定されているのはごく少数の行だけなので,「NULL以外」という条件はほぼ全行が該当し,インデックスによる絞り込み効果はほとんど期待できません。