“売上”表への次の検索処理のうち,B^+木インデックスよりもハッシュインデックスを設定した方が適切なものはどれか。
ここで,インデックスを設定する列を<>内に示す。
売上(伝票番号,売上年月日,商品名,利用者ID,店舗番号,売上金額)
正答4
解説
正解は4です。
B^+木インデックスとハッシュインデックスの使い分けを問う問題です。
B^+木インデックスはキーを順序どおりに保持するので、範囲検索や前方一致検索に強い構造です。
ハッシュインデックスはキーのハッシュ値から格納位置を直接求めるので、値が一致するものを探す検索(一致検索)は速い一方、範囲検索には使えません。
【選択肢別解説】
1:× 売上金額が1万円以上という条件は範囲検索です。
ハッシュ値には大小の順序がないため、ハッシュインデックスは使えず、B^+木インデックスの方が適しています。
2:× 売上年月日が今月という条件は、月初から月末までの範囲検索です。
範囲を順にたどれるB^+木インデックスの方が適しています。
3:× 商品名が‘DB’で始まるという条件は前方一致検索です。
文字列の順序に沿って探せるB^+木インデックスなら使えますが、値全体から計算するハッシュ値では探せません。
4:○ 利用者IDが‘1001’という条件は、値が完全に一致するものを探す一致検索です。
ハッシュ値で格納位置を一度に求められるため、ハッシュインデックスが適しています。
【ポイント】
「一致検索はハッシュ、範囲検索・前方一致・並べ替えはB^+木」と覚えます。
ハッシュインデックスは、キーの値の順序を保持しないことが弱点です。