内部結合と外部結合の「内部」と「外部」はどこから来ているのかクロス結合を元に説明している箇所を抜き出してまとめる。

クロス結合(Cross Join) すべての結合の母体

数学的には、直積、デカルト積と呼ばれる演算である。 結合対象となる2つの手0ブルのレコードから可能なすべての組み合わせ網羅を行う演算。

内部結合(Inner Join)

何の内部?

内部とは「直積の部分集合」

相関サブクエリとして書き換え可能だが、基本的に結合で記述できる限りは結合を選択するのがよい。

Why?

内部結合を相関サブクエリとして書き換えた場合、結果行数だけ相関サブクエリを実行するためコストが高くなる。

外部結合(Outer Join)

何の外部か?

外部とは、直積の部分集合にならないという意味である。

外部結合の結果には、マスタ側のテーブルだけに存在するキーがあった場合、そのキーを削除せずに、結果に保存するように動作する。

キーの値をすべて網羅するレイアウトのレポートを作成する場合に多用される。

感想

数年前は、外部結合の意味が全然分からず、Oracleでいうと(+)をつけておけばとりあえずいいんでしょうという理解しかなかったので、今思うと恐ろしい。

参考