ホーム > データベーススペシャリスト試験 > 2023年
データベーススペシャリスト試験 2023年 午前2 問13
“部品”表のメーカーコード列に対し、木インデックスを作成した。これによって、“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで、部品及びメーカーのデータ件数は十分に多く、“部品”表に存在するメーカーコード列の値の種類は十分な数があり、かつ、均一に分散しているものとする。また、“部品”表のごく少数の行には、メーカーコード列にNULLが設定されている。実線の下線は主キーを、破線の下線は外部キーを表す。

ア:メーカーコードの値が1001以外の部品を検索する。
イ:メーカーコードの値が1001でも4001でもない部品を検索する。
ウ:メーカーコードの値が4001以上、4003以下の部品を検索する。(正解)
エ:メーカーコードの値がNULL以外の部品を検索する。
解説
部品表のメーカーコード列に対する木インデックスの性能改善効果【午前2 解説】
要点まとめ
- 結論:木インデックスは範囲検索(例:4001以上4003以下)で最も性能改善が期待できる。
- 根拠:木はキーの順序を保持し、範囲指定の検索で連続した葉ノードを効率的に走査できるため。
- 差がつくポイント:単一値検索や除外条件、NULL判定では木の範囲走査の利点が活かせず、性能向上が限定的になる。
正解の理由
選択肢ウの「メーカーコードの値が4001以上、4003以下の部品を検索する」は範囲検索に該当し、木インデックスの特性を最大限に活かせます。木は葉ノードが連結リストでつながっているため、範囲内の連続したキーを高速に取得可能です。これにより、該当する複数行を効率的に検索でき、性能改善が最も期待できます。
よくある誤解
単一値の検索やNULL以外の値を検索する場合も木が効果的と思いがちですが、範囲検索ほどの性能向上は見込めません。
解法ステップ
- 問題文から木インデックスの特性を確認する。
- メーカーコード列の値の種類が多く均一に分散していることを理解する。
- 各選択肢の検索条件が単一値検索か範囲検索かを判別する。
- 木が得意とする範囲検索を含む選択肢を特定する。
- 範囲検索の選択肢(ウ)を正解と判断する。
選択肢別の誤答解説
- ア: 単一値「1001以外」の検索は除外条件であり、木の範囲走査の利点が活かせず性能改善は限定的。
- イ: 「1001でも4001でもない」も除外条件であり、インデックスの効率的な範囲走査ができない。
- ウ: 範囲指定「4001以上4003以下」の検索であり、木の葉ノード連結構造を活かして高速に検索可能。
- エ: 「NULL以外」の検索は木インデックスではNULL値は通常インデックスに含まれず、範囲検索ではないため性能改善は限定的。
補足コラム
木インデックスは、データベースの検索性能向上において最も一般的なインデックス構造の一つです。特に範囲検索や順序付き検索に強く、連続したキーの範囲を効率的に走査できます。一方で、NULL値は多くのDBMSでインデックスに含まれないことが多く、NULL判定の検索では効果が薄い点に注意が必要です。
FAQ
Q: 木インデックスは単一値検索でも効果がありますか?
A: はい、単一値検索でも効果はありますが、範囲検索ほどの性能向上は期待できません。
A: はい、単一値検索でも効果はありますが、範囲検索ほどの性能向上は期待できません。
Q: NULL値は木インデックスに含まれますか?
A: 多くのDBMSではNULL値は木インデックスに含まれないため、NULL判定の検索ではインデックスが使われないことがあります。
A: 多くのDBMSではNULL値は木インデックスに含まれないため、NULL判定の検索ではインデックスが使われないことがあります。
Q: 範囲検索以外で木インデックスが有効なケースは?
A: 単一値検索や前方一致検索などでも有効ですが、範囲検索ほどの連続性を活かせません。
A: 単一値検索や前方一致検索などでも有効ですが、範囲検索ほどの連続性を活かせません。
関連キーワード: 木, 範囲検索, インデックス性能, NULL値, データベース検索