DBデータベーススペシャリスト試験 午前Ⅱ

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

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    メーカーコードの値が1001以外の部品を検索する。
  2. イ
    メーカーコードの値が1001でも4001でもない部品を検索する。
  3. ウ
    メーカーコードの値が4001以上,4003以下の部品を検索する。
  4. エ
    メーカーコードの値がNULL以外の部品を検索する。
解き方のヒントを見る

索引探索を整理する着眼点

索引を使う探索問題では、検索条件とデータの配置、利用できる構造、処理の進み方を順に対応づけ、各段階で何を確認すべきかを整理して考えます。

この問題で問われていること

一つの探索条件に対して、対象となるデータの範囲と、索引を手掛かりに確認が進む順序を区別し、途中で参照対象が変わる点に注目してください。

視点

検索条件、索引の構成、対象データ、探索の段階を別々の要素として書き出し、それらの対応関係を確認します。処理の目的と参照先の変化を追うと整理しやすくなります。

確認ポイント

  • 検索条件がどの属性や範囲に関係するかを確認する
  • 索引内で参照される情報と実データを分けて整理する
  • 探索の各段階で、次に確認する対象が何かを追跡する
正解と解説を見る

正解

ウ

解説

B+木インデックスはキー値の順序を利用して、連続した狭い範囲を効率よく探索する処理に適している。メーカーコードが種類豊富で均一に分散する前提では、指定範囲が限定される検索ほど性能改善を期待しやすい。一方、否定条件やNULL以外の指定は多くの行を対象にしやすく、インデックスの効果が小さい。

理由

B+木はインデックスキーを順序付けて保持するため、下限と上限が指定された範囲検索では、該当する範囲を連続的にたどれる。値の種類が十分多く均一に分散しているなら、狭い範囲に該当する行数も少なくなり、表全体を調べるより効率化しやすい。

比較

値が等しくないという条件は、対象が広い範囲に及びやすい。また、NULL以外という条件も、NULLがごく少数なら大部分の行を対象にする。B+木の順序性を利用して候補範囲を限定できるかどうかが、各操作の期待効果を分ける。

選択肢ア

これは不正解だよ。1001以外という否定条件は、1001の行を除いて多くのメーカーコードを対象にする。値が均一に分散していても検索対象は広くなりやすく、B+木で少数の連続範囲だけを効率よく読む操作とはいえない。

選択肢イ

これは不正解だよ。1001でも4001でもないという条件は、二つの値だけを除いて多数のコードを対象にする否定条件である。候補となる行の範囲が広くなりやすく、B+木のキー順序を使った限定的な範囲探索による改善は期待しにくい。

選択肢ウ(正解)

これは正解だよ。4001以上かつ4003以下という上下限付きの範囲条件は、B+木のキー順序を直接利用できる。メーカーコードの種類が多く均一に分散する前提では、対象範囲が限定され、表全体の検索より性能改善を期待しやすい。

選択肢エ

これは不正解だよ。NULL以外という条件は、メーカーコードがNULLのごく少数行を除いたほぼ全行を対象にする。対象範囲が広いため、B+木で候補を大幅に絞り込む効果は小さい。NULLを除外する条件だけでは、狭い範囲検索にならない。

学習のポイント

B+木の順序性と検索範囲の広さ、NULLを含む否定条件の扱いを理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午前Ⅱ 問13(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針