SQL Server 2008.我有這個非常大的查詢,它具有很高的成本。 TOAD具有查詢優化功能,在它和做出的唯一改變是以下幾點:是char(3)現場查詢優化。 TOAD爲什麼要這樣做?
LEFT OUTER JOIN (SELECT RIN_EXT.rejected,
RIN_EXT.scar,
RIN.fcreceiver,
RIN.fcitemno
FROM dbo.rcinsp RIN
INNER JOIN RCINSP_EXT RIN_EXT
ON RIN.identity_column = COALESCE (RIN_EXT.fkey_id , RIN_EXT.fkey_id)) RIN1
ON RCI.freceiver = RIN1.fcreceiver
AND RCI.fitemno >= RIN1.fcitemno -- ***** RIGHT HERE
AND RCI.fitemno <= RIN1.fcitemno
WHERE RED.[YEAR] = '2009'
領域,這就是:
前:
LEFT OUTER JOIN (SELECT RIN_EXT.rejected,
RIN_EXT.scar,
RIN.fcreceiver,
RIN.fcitemno
FROM RCINSP_EXT RIN_EXT
INNER JOIN dbo.rcinsp RIN
ON RIN_EXT.fkey_id = RIN.identity_column) RIN1
ON RCI.freceiver = RIN1.fcreceiver
AND RCI.fitemno = RIN1.fcitemno
WHERE RED.[YEAR] = '2009'
後SQL Server 2008.
任何想法爲什麼他們比我的速度快得多?
如果你注意到,他們做了RIN和INNER JOIN RIN_EXT,而你做了RIN_EXT和INNER JOIN RIN。不知道你是否錯過了其他的差異,也不知道你是否通過刪除了你評論過的那一行並且該特定行導致了性能提升。 – JustLoren 2009-08-25 18:33:19
最佳選擇是比較2個查詢的查詢計劃,並查看他們正在使用哪些運算符。 – 2009-08-25 18:38:52
對不起,我意識到第一個腳本丟失了其他連接標準。 – DavidStein 2009-08-25 19:03:12