応用情報技術者 2011年 秋期 午前2 問32
問題文
部品表のメーカコード列に対し,B+木インデックスを作成した。これによって、検索の性能改善が最も期待できる操作はどれか。ここで、部品及びメーカのデータ件数は十分に多く、メーカコードの値は均一に分散されているものとする。また、ごく少数の行には、メーカコード列にNULLが設定されている。
選択肢
ア:メーカコードの値が1001以外の部品を検索する。
イ:メーカコードの値が1001でも4001でもない部品を検索する。
ウ:メーカコードの値が4001以上,4003以下の部品を検索する。(正解)
エ:メーカコードの値がNULL以外の部品を検索する。
部品表のメーカコード列に対しB+木インデックスを作成した場合の検索性能改善【午前2 解説】
要点まとめ
- 結論:B+木インデックスは範囲検索に強く、連続した値の範囲指定検索で最も性能向上が期待できる。
- 根拠:B+木は葉ノードが連結リストでつながっており、範囲内のデータを順次読み出すのに適しているため。
- 差がつくポイント:単一値や否定条件の検索はインデックスの恩恵が限定的だが、範囲指定は効率的にアクセスできる点を理解すること。
正解の理由
選択肢ウ「メーカコードの値が4001以上,4003以下の部品を検索する」は範囲検索に該当し、B+木インデックスの特性を最大限活かせます。B+木は葉ノードが連結されているため、範囲内の複数レコードを効率的に順次読み出せ、ディスクI/Oを最小化します。これにより検索性能が大幅に改善されます。
よくある誤解
単一値の検索や否定条件(特定の値以外を検索)はインデックスの効果が薄いと誤解されがちですが、特に否定条件は全件スキャンに近くなるため注意が必要です。
解法ステップ
- B+木インデックスの構造と特徴を理解する。
- 範囲検索が効率的に行えることを確認する。
- 各選択肢の検索条件が単一値、範囲、否定条件のどれに該当するか分類する。
- 範囲検索の選択肢を特定し、B+木の利点が活かせるものを選ぶ。
- NULL値の扱いはインデックスに影響しにくいことを考慮する。
選択肢別の誤答解説
- ア: 単一値検索であり、B+木の効果はあるが範囲検索ほど大きくない。
- イ: 複数の値を除外する否定条件で、インデックスが使いにくく全件スキャンに近くなる。
- ウ: 範囲検索であり、B+木の葉ノード連結を活かして効率的に検索可能。正解。
- エ: NULL以外の全件検索に近く、インデックスの効果はほぼ期待できない。
補足コラム
B+木インデックスはデータベースで最も一般的なインデックス構造で、特に範囲検索や順序付けされたデータの検索に強みがあります。NULL値は多くの場合インデックスに含まれず、検索効率に影響しにくい点も押さえておきましょう。
FAQ
Q: B+木インデックスは単一値検索でも効果がありますか?
A: はい、単一値検索でも効果はありますが、範囲検索ほど大きな性能向上は期待できません。
A: はい、単一値検索でも効果はありますが、範囲検索ほど大きな性能向上は期待できません。
Q: NULL値はB+木インデックスに含まれますか?
A: 多くのDBMSではNULL値はインデックスに含まれないため、NULLを含む検索はインデックスの恩恵が少ないです。
A: 多くのDBMSではNULL値はインデックスに含まれないため、NULLを含む検索はインデックスの恩恵が少ないです。
関連キーワード: B+木、範囲検索、インデックス性能、データベース検索、NULL値扱い

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

