我試圖優化一些可怕的複雜的SQL查詢,因爲它需要很長時間才能完成。SQL DATEDIFF(年,...,...)昂貴的計算?
在我的查詢中,我用很多相同的函數動態地創建了SQL語句,所以我創建了一個臨時表,其中每個函數只被調用一次而不是很多次 - 這將我的執行時間減少了3/4 。
所以我的問題是,我可以期待看到很大的差異,如果說,1,000個datediff計算縮小到100?
編輯: 查詢看起來像這樣:
SELECT DISTINCT M.MID, M.RE FROM #TEMP INNER JOIN M ON #TEMP.MID=M.MID
WHERE (#TEMP.Property1=1) AND
DATEDIFF(year, M.DOB, @date2) >= 15 AND DATEDIFF(year, M.DOB, @date2) <= 17
其中這些被動態生成的作爲字符串(一起放在星星點點),然後執行,使得各種參數可以沿着每個迭代被改變 - 主要是最後一行,包含各種DATEDIFF查詢。
這裏約有420個查詢,其中這些datediffs的計算方式如此。我知道我可以很容易地將它們全部放入臨時表中(1,000年以上),但它是否值得,它會在幾秒鐘內發生什麼變化?我希望比十分之幾秒有更好的改善。
發佈查詢 - 確實無法幫助您確認在2深度子查詢中執行DATEDIFF時的假設... – 2010-03-30 17:46:49