問27 ハッシュ索引が向く検索

応用情報​技術者試験 令和7年度 秋期 午前、全80問のうちの問27。

出典:令和7年度 秋期 応用情報技術者試験 午前 問27

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

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

  1. ア売上金額が 1 万円以上の売上を検索する。<売上金額>
  2. イ売上年月日が今月の売上を検索する。<売上年月日>
  3. ウ商品名が‘DB’で始まる売上を検索する。<商品名>
  4. エ利用者 ID が‘1⁠0⁠0⁠1’の売上を検索する。<利用者 ID>
答えと解説を開く

正解はエです。

ハッシュインデックスは、列の値をハッシュ関数にかけて置き場所を決める索引です。「利用者 ID が 1⁠0⁠0⁠1」のように値がぴったり等しい物を探すときは、1 回の計算で置き場所が分かるので速く探せます。一方、ハッシュ値は元の値の大小の順を保たないので、「1 万円以上」「今月」のような範囲の検索や、「DB で始まる」のような前方一致の検索には使えません。こうした検索には、値を順に並べて持つ B⁺木インデックスが向いています。等しい値で探すエが正解です。

ほかの選択肢が違う理由

  • ア1 万円以上という範囲の検索です。値の順に並んだ B⁺木インデックスなら、1 万円の位置から先を順に読めます。
  • イ今月という日付の範囲の検索です。範囲の検索は B⁺木インデックスの得意な使い方です。
  • ウDB で始まる、という前方一致の検索です。B⁺木なら DB で始まる値が並ぶ範囲を探せますが、ハッシュでは近い値どうしがばらばらの場所に置かれます。

仕組み

B⁺木は、値を小さい順に並べた木の形の索引で、葉どうしが順につながっています。等しい値の検索も範囲の検索もこなせるので、多くのデータベースで既定の索引になっています。

ハッシュは、等しい値の検索だけに絞る代わりに、データが増えてもほぼ一定の速さで探せます。探し方に合わせて索引の種類を選ぶのが要点です。

この問に出る言葉