說我有類似下面的查詢:JOIN的順序是否有所不同?
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
我會看到性能提升,如果我改變了我的加入對錶2和表3的順序。請看下圖:
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
我聽說查詢優化器將嘗試確定最佳的順序,但並不總是奏效。您使用的SQL Server版本是否有所作爲?
我該如何檢查?我應該多長時間更新一次我的統計資料是否有一個很好的經驗法則? – 2010-01-28 00:47:27
實際執行計劃中是否包含預計和實際行?所以,如果它估計1行,它返回數千,那麼我可能需要更新我的統計數據?如果我加入臨時桌子,它會有所作爲嗎? – 2010-01-28 01:06:34
另外,如果加入視圖,統計是否會有所作爲? – 2010-01-28 01:22:34