Wenn Sie INNER JOIN
durch OUTER JOIN
ersetzen, wird es einen Unterschied geben.
Andernfalls diese Abfragen:
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
identisch sind.
Oracle
, MySQL
, PostgeSQL
und SQL Server
wird behandeln sie genau das gleiche, und verwenden genau denselben Plan für alle von ihnen.
würde ich dies verwenden:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
wenn es eine einspaltige Taste auf B.FK
ist, und diese:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
, wenn es ein zusammengesetzter Schlüssel auf (B.FK, B.title)
ist.
Die Join-Bedingungen sind in diesem Fall sichtbarer.
Ich würde denken, die Abfrage optimzier könnte nicht weniger interessieren; aber ich bin kein Guru ... – balpha
@balpha: das stimmt nur für * INNER * Joins. Es gibt einen Unterschied für OUTER Joins. – Sung