SQL:結合条件(ON)に書くべきか検索条件(WHERE)に書くべきか?
実のところ、どちらに書いてもオプティマイザが解決してまず同じ結果になってしまう。
ON の場合、結合前(結合時)に評価される。
先に絞り込みたいなら、こちらの方が正しいはず。
WHERE の場合、結合後のテーブルに対して評価される。
同じ条件にならないケースは?
OUTER JOIN の場合
ON の場合、OUTER JOIN で追加したテーブルに対して、条件にマッチしないレコードの列は NULL として保持される。
WHERE の場合、結合後のテーブルに対して、条件にマッチしない場合はレコード自体が存在しなくなる。