インデックスの特性(B+木とハッシュインデックスの使い分け)

データベースにおける代表的なインデックス構造の特徴の違いは以下のとおりです。 ハッシュインデックス:キー値からハッシュ関数を用いて格納位置を直接計算するため、「等値検索($=$ 検索)」を平均 $O(1)$ の極めて高速な計算量で実行できます。ただし、データの順序性を保持しないため、範囲検索($\geqq$ 等)や前方一致(LIKE 'DB%')等の順序を利用する検索には利用できません。 $\text{B}^+$木インデックス:キー値がソートされたツリー構造を保持しているため、等値検索だけでなく範囲検索やソート処理、前方一致検索にも柔軟に対応($O(\log N)$)できます。 各選択肢の検索条件を確認すると、エの「利用者 ID が '1001' の売上を検索する」は完全一致(等値検索)であるため、ハッシュインデックスのメリットを最大限に享受できます。したがってエが正解です。 各選択肢の解説は以下のとおりです。 「1万円以上」という範囲検索であるため、キーの順序関係を保持する $\text{B}^+$木インデックスが適しています(ハッシュインデックスは範囲検索に利用できません)。 「今月」という日付範囲の検索であるため、範囲検索に適した $\text{B}^+$木インデックスが適しています。 「'DB' で始まる」という前方一致検索(文字列の辞書順)であるため、プレフィックス検索に対応できる $\text{B}^+$木インデックスが適しています。

“売上”表への次の検索処理のうち,B+\text{B}^+木インデックスよりもハッシュインデックスを設定した方が適切なものはどれか。ここで,インデックスを設定する列を ⟨ ⟩\langle\ \rangle 内に示す。

売上(伝票番号,売上年月日,商品名,利用者ID,店舗番号,売上金額)

出典令和7年度秋期 応用情報技術者試験 午前 問27
ア
売上金額が 1 万円以上の売上を検索する。 ⟨\langle売上金額⟩\rangle
イ
売上年月日が今月の売上を検索する。 ⟨\langle売上年月日⟩\rangle
ウ
商品名が ‘DB’ で始まる売上を検索する。 ⟨\langle商品名⟩\rangle
エ
利用者 ID が ‘1001’ の売上を検索する。 ⟨\langle利用者ID⟩\rangle