DBデータベーススペシャリスト試験 午前Ⅱ
令和5年度秋期 データベーススペシャリスト 午前Ⅱ 問13
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- アメーカーコードの値が1001以外の部品を検索する。
- イメーカーコードの値が1001でも4001でもない部品を検索する。
- ウメーカーコードの値が4001以上,4003以下の部品を検索する。
- エメーカーコードの値が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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針