如果您將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
將對待他們完全一樣,並使用完全相同的計劃爲他們所有。如果在B.FK
單列關鍵,而這一次
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
WHERE A.Name = "Foo"
AND B.Title = "Bar"
:
SELECT ...
FROM A
INNER JOIN
B
ON B.FK = A.PK
AND B.Title = "Bar"
WHERE A.Name = "Foo"
如果在(B.FK, B.title)
複合鍵
我會用這一個。
在這種情況下,連接條件更直觀。
我會認爲查詢優化器並不在乎;但我不是大師...... – balpha 2009-08-05 16:29:46
@balpha:只適用於* INNER *連接。外部連接有區別。確切地說,是 – Sung 2009-08-06 05:09:08