令和5年度 秋期 午前 問26
データベース
ハッシュインデックスに関する問題
“売上”表への次の検索処理のうち,B+木インデックスよりもハッシュインデックスを設定した方が適切なものはどれか。ここで,インデックスを設定する列を<>内に示す。
〔表〕
売上(伝票番号,売上年月日,商品名,利用者 ID,店舗番号,売上金額)
- ア売上金額が 1 万円以上の売上を検索する。<売上金額>
- イ売上年月日が今月の売上を検索する。<売上年月日>
- ウ商品名が‘DB’で始まる売上を検索する。<商品名>
- エ利用者 ID が‘1001’の売上を検索する。<利用者 ID>
答えと解説を見る
✓ これが正解エ利用者 ID が‘1001’の売上を検索する。<利用者 ID>
解説
ハッシュが効くのは等号の検索だけです。
設問は、売上表への四つの検索処理のうち、B+木インデックスよりもハッシュインデックスを設定した方が適切なものを選ばせています。見分けの軸は、二つのインデックスの仕組みの違い一つで足ります。B+木は値が順に並んだ形で保たれるので、一つの値を当てる検索にも、ある値より上や下といった幅のある検索にも、先頭が同じものを集める検索にも、並べ替えにも効きます。一方のハッシュは、値を関数に通した先の場所へ置くので、並びが崩れます。その代わり、値がぴったり一つに決まっていれば、一回の計算で置き場所が分かります。つまりハッシュが勝てるのは、値が一点に定まる等号の検索に限られます。正解は、利用者 ID が 1001 の売上を検索するもので、四つのうちこれだけが値を一点に指定しています。
ほかの選択肢はなぜ違うのか
- ア売上金額が 1 万円以上の売上を検索する…:売上金額が 1 万円以上のものを集める検索で、指定する値に幅があります。関数に通した先の場所は元の大小と無関係に散らばるため、この条件に当てはまる行を集めるには結局すべてを見ることになります。
- イ売上年月日が今月の売上を検索する。<売上…:売上年月日が今月のものという条件は、月の初日から末日までという区間を指しています。今月という短い言い方に引きずられると一点の指定に見えますが、実際には一か月ぶんの幅をもっています。
- ウ商品名が‘DB’で始まる売上を検索する。…:商品名が DB で始まるものを集める、先頭だけが決まった検索です。続く文字が違えば関数に通した先の場所も別々になるため、DB という手掛かりだけでは置き場所を一つに絞り込めません。
この問題の用語
- ハッシュハッシュ関数で作られた値そのもの。元に戻せないので、中身を見せずに同じかどうかだけを確かめるのに使えます。
出典:令和5年度 秋期 応用情報技術者試験 午前 問26
同じ用語が出る問題
- 令和7年度 秋期 午前 問27:ハッシュインデックスに関する問題(ハッシュ)
- 令和6年度 秋期 午前 問46:エクスプロイトコードの説明(ハッシュ)
- 令和5年度 春期 午前 問41:TPMに関する問題(ハッシュ)
- 令和2年度 10月 午前 問44:TPMに関する問題(ハッシュ)
- 平成30年度 秋期 午前 問8(ハッシュ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)