2011-02-10 135 views
0

我有一種情況,一個存儲過程調用內多個用戶定義的函數,並且採取了高執行時間優化SQL查詢

我應該攜帶什麼樣的優化理論了優化這個查詢等語句?和擔憂?

+1

您使用的數據庫是? – 2011-02-10 16:55:12

+0

Microsoft SQL Server – Sudantha 2011-02-10 16:55:55

回答

4

優化是一個複雜的主題,不能充分回答沒有代碼或沒有獲得確切的情況。但是有一些指導原則。首先由用戶自定義的函數可能會特別慢,特別是標量函數。用內聯代碼替換它們可能會更快(當然不是所有情況下,這就是爲什麼您要測量基準時間並嘗試不同的替代方法),因爲許多UDF會導致數據庫必須逐行運行,而不是對數據集執行操作。

如果你打算優化複雜的sql,首先你需要學習如何閱讀執行計劃(在網上搜索一些免費的電子書),然後你需要有效地使用Profiler(尤其是如果你的代碼是生成的由應用程序)。您需要了解索引,可擴展性以及使用基於集合的查詢替換遊標和循環操作的方法。

有很多關於性能調優的好書,我建議你購買它們。