我想只要確認SQL查詢使用LEFT(外部)連接時,連接中的表的順序是否重要?
SELECT ....
FROM apples,
oranges
LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,
bananas
WHERE ....
完全等同於from子句其他排列,像
SELECT ....
FROM oranges
LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,
bananas,
apples
WHERE ....
或
SELECT ....
FROM bananas,
apples,
oranges
LEFT JOIN kiwis ON kiwis.orange_id = oranges.id
WHERE ....
爲明確桔子和獼猴桃之間的左連接保持完好。從我讀過的各種文檔中,返回的集合應該完全相同。
我真的只關心查詢的結果,而不是在實際數據庫中的性能。 (我使用的是PostgreSQL 8.3,AFAIK不支持關於連接順序的優化器提示,並會嘗試自動創建最佳查詢計劃)。
你測試了嗎? 'JOIN'的順序是無關緊要的,除非你需要以前'JOIN'的具體結果 – Matthew 2011-02-15 21:24:04
香蕉,蘋果,桔子是笛卡爾產品嗎?或「加入WHERE」子句? – gbn 2011-02-15 21:34:15
EXPLAIN將向您展示:http://www.postgresql.org/docs/current/static/sql-explain.html並且沒有任何提示的理由,PostgreSQL非常聰明。 – 2011-02-15 21:41:46