【はっしゅけつごう】
ハッシュ結合 とは?
公開:
💡 キーの早見表を作って照合する
一方の入力からハッシュ表を作り、もう一方の入力のキーで照合する結合方式。典型的には等価結合に使われ、全組み合わせの比較を減らせる。
📌 このページのポイント
2つの表の行を、全部比べなくても結合できるの?
等しいキーで結ぶなら、片方に早見表を作る方法があるよ。それがハッシュ結合。キーからハッシュ表の場所を求め、照合する候補を絞るんだ。
どういう順番で動くの?
まずビルド側の入力をハッシュ表に入れる。次にプローブ側を読み、同じキーの候補を探すよ。キー2・4の表に対して1・2・4を照合する内部結合なら、2と4が結果になるね。
ハッシュ値が同じなら、同じ行なの?
そうとは限らないよ。別のキーが同じハッシュ値になる衝突があるので、実際のキーも比較する。同じキーの行が両側に複数ある場合も、結合条件に合う組み合わせを取りこぼしてはいけないんだ。
どれくらい速くなるの?
ハッシュ表がメモリに収まり、偏りが小さいなら、全組み合わせを試すより比較を減らせるよ。でも結果が大量に出ればその出力費用は必要だし、メモリに収まらず一時ファイルを使えば追加の読み書きが発生する。決まった倍率で速くなるわけではないんだ。
どちらの表を早見表にするか、自分で決めるの?
まとめ:ざっくりこれだけ覚えればOK!
「ハッシュ結合」は「キーの早見表を作って照合する」と押さえておこう!
📖 おまけ:英語の意味
「hash join」 = ハッシュを使う結合
💬 hash joinは「ハッシュを使う結合」という意味の表現だよ。