ハッシュ結合(hash join)は、リレーショナルデータベース(RDB)において、大規模データの結合処理における高速化手法の一つです。
JOIN操作はSQLクエリの中でも頻繁に使われるため、パフォーマンスの最適化にはそのアルゴリズム理解が重要です。
本記事では、ハッシュ結合の仕組み、適用条件、他のJOINアルゴリズムとの違い、そして実際の活用例まで、ITエンジニア視点で詳しく解説します。
ハッシュ結合とは?
ハッシュ結合の基本概念
ハッシュ結合とは、RDBにおけるテーブル結合時に使用される等価条件に特化したJOINアルゴリズムです。
主に以下のような特徴があります。
-
一方のテーブル(通常は小さい方)を基にハッシュテーブル(インメモリ)を構築
-
他方のテーブルを順に走査し、対応するハッシュ値をもとに一致する行を探す
-
ソート処理が不要なため、等価条件において非常に高速に動作
主な利用シーン
-
結合条件が
=
(等号)で指定されている場合 -
結合対象の一方のテーブルがメモリに収まる程度に小さい
-
インデックスがなくても高速な結合が求められる場面
ハッシュ結合の処理手順
ビルドフェーズ(Build Phase)
まず、一方のテーブル(一般的には行数が少ない方)を使用し、結合キーに基づいてハッシュテーブルを構築します。
各レコードのキーに対してハッシュ関数を適用し、ハッシュ値ごとにデータを分類・格納します。
プローブフェーズ(Probe Phase)
次に、もう一方のテーブルを先頭から順に走査し、同様にハッシュ値を算出して、先に構築したハッシュテーブルから一致するレコードを探索・結合します。
図解イメージ(例)
以下は簡易的な例です:
Visited 3 times, 1 visit(s) today