INNER JOIN
をOUTER JOIN
に置き換えた場合、違いがあります。
そうでない場合は、これらのクエリ:
SELECT ...
FROM A
INNER JOIN
B
ON A.PK = B.FK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
SELECT ...
FROM A
INNER JOIN
B
ON A.PK = B.FK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
SELECT *
FROM A, B
WHERE B.Title = "Bar"
AND A.Name = "Foo"
AND A.PK = B.FK
は同じです。
Oracle
、MySQL
、PostgeSQL
およびSQL Server
は、それらを全く同じように扱い、すべてについて全く同じ計画を使用します。
私はこの1つを使用したい:(B.FK, B.title)
上の複合キーがある場合
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
:B.FK
上の単一列のキー、およびこの1つが存在する場合
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
を。
この場合、結合条件はより視覚的です。
私はクエリオプティマイザがあまり気にしないと思うでしょう。しかし、私は指導者ではありません。 – balpha
@balpha:それは* INNER *結合だけに当てはまります。 OUTER結合には違いがあります。 – Sung