応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
合格発表日:2025年7月3日(あと15日)

応用情報技術者試験 平成30年秋 午前問29 解説付き過去問

問題

"部品"表のメーカコード列に対し、B+木インデックスを作成した。 これによって、"部品"表の検索の性能改善が最も期待できる操作はどれか。 ここで、部品及びメーカのデータ件数は十分に多く、"部品"表に存在するメーカコード列の値の種類は十分な数があり、かつ、均一に分散しているものとする。 また、"部品"表のごく少数の行には、メーカコード列にNULLが設定されている。 実線の下線は主キーを、破線の下線は外部キーを表す。

 部品(部品コード,部品名,メーカーコード)
 メーカー(メーカーコード,メーカー名,住所)

正解

解説

この問題は、B+木インデックスを利用したデータベースの検索性能に関するものです。特に、"部品"表のメーカコード列にB+木インデックスが適用されている状況で、どの検索操作が性能改善に最も効果的かを考える必要があります。

  1. メーカコード列とB+木インデックスの関係
    B+木インデックスは、範囲検索に非常に効率的です。これは、インデックスが値をソートされた順に保持し、範囲の開始点と終了点を迅速に特定できるためです。メーカコードの種類が多く、均一に分散している場合、B+木はこの特性を活かして、特定の範囲にあるメーカコードを素早く検索できます。

  2. 各選択肢の検索の特性とインデックスの適用可能性
    1. 特定の値以外を検索する場合(例: 1001以外)は、インデックスの効率が低下する可能性があります。これは、除外する値を除いて残りの全範囲を検索する必要があるためです。
    2. 複数の特定値を除外する検索(例: 1001でも4001でもない)も、広範囲にわたる検索が必要となり、インデックスの効果が限定的です。
    3. 特定の範囲内での検索(例: 4001以上4003以下)は、B+木の強みを活かし、非常に効率的にデータを見つけ出すことができます。
    4. NULL以外の値を検索する場合、インデックスはNULL値を無視するため、特定の非NULL値の効率的な検索が可能ですが、全体の範囲を対象とするため、特定範囲検索ほどの効率は見込めません。

したがって、メーカコードの値が4001以上、4003以下の部品を検索する操作が、B+木インデックスを使用した場合の性能改善が最も期待できる操作です。これは、B+木が範囲検索を得意としており、指定された狭い範囲内で効率的にデータを抽出できるためです。