Если вы замените 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
будут относиться к ним одинаково и использовать для всех них одинаковый план.
Я бы использовал это:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
если в B.FK
есть ключ с одним столбцом, и этот:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
если есть составной ключ на (B.FK, B.title)
.
В этом случае условия соединения более наглядны.