B+木インデックスとハッシュインデックス|科目A-1 令和7年 秋期午前試験 問27

出典:令和7年秋期 午前 問27 分野:データベース / トランザクション処理
"売上"表への次の検索処理のうち,B+木インデックスよりもハッシュインデックスを設定した方が適切なものはどれか。ここで,インデックスを設定する列を<>内に示す。

 売上 (伝票番号,売上年月日,商品名,利用者ID,店舗番号,売上金額)
  • ア:売上金額が1万円以上の売上を検索する。<売上金額>
  • イ:売上年月日が今月の売上を検索する。<売上年月日>
  • ウ:商品名が'DB'で始まる売上を検索する。<商品名>
  • エ:利用者IDが'1001'の売上を検索する。<利用者ID>
解説

インデックスは、データベース内のデータを高速に検索するための仕組みです。本の索引のように、目的のデータがどこにあるかを探しやすくします。

インデックスを使うと検索や並替えが速くなりますが、その分、インデックスを保存するためのディスク容量や、データ追加・更新時のメンテナンス処理が必要になります。

種類 特徴 向いている処理
B+木インデックス 木構造でキー値を管理する方式。多くのRDBMSで一般的に使われる 範囲検索、並替え、大小比較を含む検索
ハッシュインデックス ハッシュ関数を使い、キー値からデータの格納位置を直接求める方式 特定の値と完全一致する検索

B+木インデックスは、キー値が並んだ状態で管理されるため、「100以上200以下」のような範囲検索や、昇順・降順の並替えに向いています。また、木の深さが一定に保たれるため、大量のデータでも比較的安定した速度で検索できます。

一方、ハッシュインデックスは、キー値から格納位置を直接求められるため、「IDが12345のデータを探す」のような完全一致検索に向いています。ただし、データが順番に並んでいるわけではないため、範囲検索や並替えには向きません。

つまり、B+木インデックスは「範囲検索や並替えに強いインデックス」、ハッシュインデックスは「完全一致検索に強いインデックス」と考えると分かりやすいです。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:売上金額が1万円以上の売上を検索する。<売上金額>
⇒「1万円以上」は範囲検索です。ハッシュインデックスは値の大小関係や範囲をたどる検索に向かないため、売上金額の順序を利用できるB+木インデックスの方が適しています。
イ:売上年月日が今月の売上を検索する。<売上年月日>
⇒「今月の売上」は、特定の期間に含まれる売上を探す範囲検索です。日付の範囲を効率よく検索するには、キー値を順序付けて管理するB+木インデックスの方が適しています。
ウ:商品名が'DB'で始まる売上を検索する。<商品名>
⇒「'DB'で始まる」は前方一致検索です。文字列の並び順を利用して範囲として探せるため、B+木インデックスが適しています。ハッシュインデックスは完全一致検索には向きますが、前方一致検索には向きません。
TSUNAGARU-ADVICE

まず押さえたいこと

ハッシュインデックスは、特定の値と完全に一致するデータを高速に探すのが得意です。一方、B+木インデックスは、大小比較や範囲検索、前方一致のように順序を使う検索に向いています。等価検索ならハッシュ、範囲検索ならB+木と押さえましょう。

迷ったときの判断軸

「1万円以上」「今月」「DBで始まる」は、値の範囲や並び順を使って探すため、B+木インデックスが向いています。これに対して「利用者IDが'1001'」のように、特定の値と一致する行を探す条件では、ハッシュインデックスの特徴が活きます。

科目Bにつなげるために

特にプロフェッショナルデジタルスキル(データ・AI)試験合格を目指す方は、インデックスを単なる高速化手段としてではなく、検索条件に合わせて選ぶ設計要素として理解しておくと有効です。SQLのWHERE句・検索性能・テーブル設計を結び付けて考える力につながります。