IPA過去問ドリル

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13

テクノロジ/データベース

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

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13の図

出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13

正解:ウ

解説

B⁺木インデックスは,葉ノードがキー値の昇順に連結されているため,等価検索に加えて範囲検索(BETWEEN や不等号による絞り込み)でも効率よく該当行を絞り込めます。一方,「〜以外」や「NULL 以外」のような否定条件は,結果として表の大半の行が該当してしまうため,インデックスを使ってもランダムアクセスが増えるだけで,全表走査より遅くなることが多く,性能改善は期待できません。

選択肢ごとの解説

  • 誤り。1001 以外という否定条件では表のほとんどの行が該当するため,インデックスによる性能改善は期待できません。
  • 誤り。1001 でも 4001 でもないという否定条件も同様に該当行が非常に多く,インデックスは有効に働きません。
  • 正しい。4001 以上 4003 以下という範囲検索は,B⁺木の葉ノードを順にたどることで効率よく処理でき,値が均一に分散しているため絞り込み効果も大きくなります。
  • 誤り。NULL が設定されているのはごく少数の行なので,NULL 以外の検索はほぼ全行が該当し,インデックスによる性能改善は期待できません。
データベーススペシャリストの過去問を演習モードで解く