平成30年度秋期 応用情報技術者試験 午前 問29
"部品"表のメーカコード列に対し,B+木インデックスを作成した。これによって,"部品"表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,"部品"表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,"部品"表のごく少数の行には,メーカコード列にNULLが設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。 部品(部品コード,部品名,メーカコード) メーカ(メーカコード,メーカ名,住所)
- ア メーカコードの値が1001以外の部品を検索する。
- イ メーカコードの値が1001でも4001でもない部品を検索する。
- ウ メーカコードの値が4001以上,4003以下の部品を検索する。
- エ メーカコードの値がNULL以外の部品を検索する。
解答・解説を見る
正解:ウ
AI解説
正解はウ。B+木インデックスは葉ノードがキー順に並び順序付けられているため、等価検索(=)だけでなく範囲検索(BETWEEN、<、>)に強いのが特徴である。「4001以上4003以下」という範囲条件は、インデックスで該当範囲の葉を順にたどるだけで済み、性能改善が最も期待できる。 ア: 「1001以外」という否定条件は該当行が表の大部分を占めるため、インデックスを使うより全件走査の方が効率的で、改善効果はほとんどない。 イ: 「1001でも4001でもない」も否定条件で該当行が大多数となり、インデックスの効果は期待できない。 ウ: 正しい。範囲検索はB+木インデックスの得意分野であり、値の種類が多く均一に分散しているため絞り込み効果も高い。 エ: NULLは、ごく少数の行だけなので「NULL以外」はほぼ全行が該当し、全件走査と変わらず改善は期待できない。 💡 インデックスが効くのは「少数の行に絞り込める条件」。否定条件(≠、NOT)や該当率の高い条件は効かない。B+木は範囲検索に強い、ハッシュインデックスは等価検索専用、という対比も頻出である。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。