【そーとまーじけつごう】

ソートマージ結合 とは?

公開:
💡 並んだ2つの名簿を先頭から突き合わせる

結合キーの順に並んだ2つの入力を、位置を進めながら照合する結合方式。入力が未整列なら並べ替えの費用も必要になる。

📌 このページのポイント
ソートマージ結合 整列済み入力を比較して進める 左:1 → 2 → 4 右:2 → 3 → 4 一致するキー:2、4 重複キーは組み合わせを出力。未整列ならソートも必要
並んだ2つの名簿を先頭から突き合わせる
ひよこ ひよこ
名簿を順番に見るような結合があるの?
ペンギン先生 ペンギン先生
あるよ。結合キーで整列した2つの入力を突き合わせるソートマージ結合だよ。ここでは、キーが等しい行を結ぶ内部結合を例にしよう。
ひよこ ひよこ
順番に見るだけで、見落とさないの?
ペンギン先生 ペンギン先生
左が1・2・4、右が2・3・4なら、まず小さい左の1を進める。2で一致し、そのあと右の3を進めて4で一致する。どちらも整列済みなので、小さい値を進めても後からその値と一致する相手を飛ばさずに済むんだ。
ひよこ ひよこ
同じ番号が何回も出てきたら?
ペンギン先生 ペンギン先生
一致するグループをまとめて扱うよ。左にキー2が2行、右にキー2が3行あり、条件がそのキーの一致だけなら、結果は6行になる。各行を1回見るだけで必ず終わる、とは説明できないんだ。
ひよこ ひよこ
もともと並んでいなかったらどうするの?
ペンギン先生 ペンギン先生
ソートしてから結合するよ。その並べ替えには時間やメモリがかかり、入力が大きければ一時ファイルも使う。適切な索引が必要な順序を提供すれば、ソートを省ける場合もあるんだ。
ひよこ ひよこ
いつハッシュ結合よりよいの?
ペンギン先生 ペンギン先生
すでに整列した入力を利用できるか、必要なメモリはどのくらいか、結果が何行になるかなどで変わるよ。結合部分の動きだけで優劣を決めず、入力を準備する費用も含めて実行計画を比べよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ソートマージ結合」は「並んだ2つの名簿を先頭から突き合わせる」と押さえておこう!
📖 おまけ:英語の意味
「sort-merge join」 = 整列して突き合わせる結合
💬 sort-merge joinは「整列して突き合わせる結合」という意味の表現だよ。

参考資料

← 用語集にもどる