応用情報技術者試験 応用情報技術者試験 平成30年度秋期 午前 問29: “部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデ
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列に NULL が設定されている。実線の下線は主キーを,破線の下線はを表す。
部品(部品コード,部品名,メーカコード)
メーカ(メーカコード,メーカ名,住所)
60.44%
問題本文
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列に NULL が設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。 部品(部品コード,部品名,メーカコード) メーカ(メーカコード,メーカ名,住所)
選択肢
- ア.メーカコードの値が 1001 以外の部品を検索する。
- イ.メーカコードの値が 1001 でも 4001 でもない部品を検索する。
- ウ.メーカコードの値が 4001 以上,4003 以下の部品を検索する。
- エ.メーカコードの値が NULL 以外の部品を検索する。
正解
ウ. メーカコードの値が 4001 以上,4003 以下の部品を検索する。
解説
B+木インデックスは値が大小順に並んだ木構造のため、特定の値や「○○以上△△以下」といった範囲検索(等号・範囲条件)で絞り込むときに高速に効く。一方、「○○以外」のように大部分の行が該当してしまう否定条件では、結局ほぼ全行を読むことになりインデックスの効果が小さい。値の種類が多く均一分散しているという条件下では、狭い範囲を指定するウ(4001以上4003以下)が最も性能改善を期待できるため正解。
選択肢ごとの解説
- ア.「1001以外」は否定条件で、対象がほぼ全行に及ぶ。インデックスで絞り込めず全表走査に近くなるため効果が小さく誤り。
- イ.「1001でも4001でもない」も否定条件で大半の行が該当する。インデックスの効果は薄く誤り。
- ウ.4001以上4003以下という狭い範囲検索は、B+木で対象範囲だけを効率よくたどれる。値が均一分散のため該当行も少なく、性能改善が最も期待できる。正解。
- エ.「NULL以外」はNULLがごく少数なので、ほぼ全行が該当する。絞り込みにならずインデックスの効果が小さいため誤り。
応用情報技術者試験 平成30年度秋期 午前 の過去問一覧へ戻る・問29