応用情報技術者 2015年 春期 午前2 問29
問題文
“部品”表のメーカコード列に対し、B+木インデックスを作成した。これによって、“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで、部品及びメーカのデータ件数は十分に多く、メーカコードの値は均一に分散されているものとする。また、“部品”表のごく少数の行には、メーカコード列にNULLが設定されている。ここで、実線の下線は主キーを、破線の下線は外部キーを表す。
部品(部品コード、部品名、メーカコード)
メーカ(メーカコード、メーカ名、住所)
選択肢
ア:メーカコードの値が1001以外の部品を検索する。
イ:メーカコードの値が1001でも4001でもない部品を検索する。
ウ:メーカコードの値が4001以上、4003以下の部品を検索する。(正解)
エ:メーカコードの値がNULL以外の部品を検索する。
部品表のメーカコード列に対するB+木インデックスの性能改善効果【午前2 解説】
要点まとめ
- 結論:B+木インデックスは範囲検索に強く、連続した値の範囲指定で最も性能改善が期待できる。
- 根拠:B+木は葉ノードが連結リスト状に並び、範囲内のデータを効率的に順次アクセス可能であるため。
- 差がつくポイント:単一値や除外条件の検索はインデックスの恩恵が限定的で、NULL除外もインデックス対象外が多い点に注意。
正解の理由
選択肢ウ「メーカコードの値が4001以上、4003以下の部品を検索する」は範囲検索に該当し、B+木インデックスの特性を最大限活かせます。B+木は葉ノードが連結リストでつながっているため、範囲内の連続したキーを効率的に読み出せ、ディスクI/Oを最小化します。これにより検索性能が大幅に向上します。
よくある誤解
単一値の検索や除外条件(1001以外など)はインデックスの効果が薄いと誤解されがちです。また、NULL値の検索は多くのインデックスで対象外となるため、性能改善は期待できません。
解法ステップ
- B+木インデックスの構造と特性を理解する。
- 範囲検索が効率的に行えることを確認する。
- 各選択肢の検索条件が単一値、除外条件、範囲検索、NULL除外のどれに該当するか分類する。
- 範囲検索に該当する選択肢を正解と判断する。
選択肢別の誤答解説
- ア: 「1001以外の部品検索」は除外条件であり、インデックスの範囲走査ができず効率が悪い。
- イ: 「1001でも4001でもない部品検索」も除外条件で範囲検索に適さない。
- ウ: 「4001以上4003以下の範囲検索」はB+木の葉ノード連結を活かし高速に検索可能。
- エ: 「NULL以外の検索」はNULLはインデックスに含まれないことが多く、性能改善は期待できない。
補足コラム
B+木インデックスはデータベースの代表的なインデックス構造で、主に範囲検索や順序付き検索に強みがあります。NULL値は多くのDBMSでインデックス対象外となるため、NULLを含む検索条件ではインデックスが使われにくい点に注意が必要です。
FAQ
Q: B+木インデックスは単一値検索でも効果がありますか?
A: はい、単一値検索でも効果はありますが、範囲検索ほどの性能向上は期待できません。
A: はい、単一値検索でも効果はありますが、範囲検索ほどの性能向上は期待できません。
Q: NULL値はなぜインデックスに含まれないことが多いのですか?
A: NULLは「値が存在しない」状態を示すため、インデックスのキーとして扱いにくく、多くのDBMSで除外されます。
A: NULLは「値が存在しない」状態を示すため、インデックスのキーとして扱いにくく、多くのDBMSで除外されます。
関連キーワード: B+木インデックス、範囲検索、NULL値、インデックス性能、データベース検索

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

