目次
ハッシュ結合とは(動かして確認)
ハッシュ結合とは、2つのテーブルを、結合キーのハッシュ値を使って高速に結び付ける方法です。
1.通常は、小さい方のテーブルを使ってハッシュ表を作ります。これを Build側 と呼びます。
2.もう片方のテーブルを1行ずつ読みます。こちらを Probe側 と呼びます。
ハッシュ結合では、片方だけがハッシュ計算されるわけではありません。両方でハッシュ計算します。ただ目的が違います。
Build側:ハッシュ計算してハッシュ表を作る
Probe側:ハッシュ計算してハッシュ表の場所を探す
動かして確認
以下のSQLを実行する場合です。
| SELECT e.name, d.name FROM emp e JOIN dept d ON e.dept_id = d.dept_id |
「1ステップ進む」をクリックすると動きます。
dept(部署)— ビルド側
5行 / 小さい方
| dept_id | name |
|---|
emp(社員)— プローブ側
5行 / 大きい方
| emp_id | name | dept_id |
|---|
ハッシュ表(メモリ上)
h(k) = (k ÷ 10) mod 4
結合結果
0行
ビルド側 / ハッシュ表
プローブ側
キー一致
← → キーでも操作できます
プローブ側
キー一致
← → キーでも操作できます
どんな場合に向いているか
ハッシュ結合は特に、 A.社員ID = B.社員IDのような等価結合(=)に向いています。
A.金額 > B.金額のような範囲条件には基本的に向いていません。
関連の記事
