2010-06-16 63 views
1

我們正在經歷一輪sql-server存儲過程優化。在一個建議,我們已經找到了明確適用於我們在每個過程的頂部「SET NOCOUNT ON」。 (是的,我已經看到了什麼客戶端對象您從存儲過程,但這些都不是問題,對於我們指出這個問題,不同的職位。)通過刪除打印語句來優化sql-server性能

所以現在我只是想在加有點常識。如果SET NOCOUNT ON的好處僅僅是每次少量地減少網絡流量,那麼關閉我們僅用於調試的存儲過程中的所有PRINT語句是否有意義?

我看不出它是如何損害性能的。 OTOH,由於一些print語句是else語句中的唯一內容,所以實現起來有點麻煩,所以你不能總是隻註釋掉一行並完成。這種變化帶來了一定的風險,所以如果它沒有實際幫助,我不想這樣做。

但我沒有看到消除在優化文章中提到的任何地方的打印語句。那是因爲它是如此明顯,沒有人會提及它呢?

回答

0

如果要調用PRINT一個循環內(如印刷,同時通過行cutsoring),那麼,你可以節省時間,如果你是通過足夠的記錄,循環也可能是相當顯著。除此之外,除非您的存儲過程本身在循環中被重複地調用,否則我會私下留下PRINT語句。他們的表現,對於小字符串,通常應該可以忽略不計。

0

我與被印刷在其中從ADO.NET調用時(當直接調用無差錯)引起的錯誤的存儲過程大量的診斷數據的問題。不幸的是,我不記得這個錯誤,但我添加了一個標誌,這樣診斷信息就被包含在條件中,以避免它們在生產中被排出。