我正在使用SQL Server過程,並且有習慣在存儲過程中使用Print
語句來區分過程代碼。SQL過程中的打印語句應該會影響性能?
我的數據庫中有近200-250個程序。 應該打印聲明會影響性能嗎? 我正在處理多用戶Windows應用程序。
我正在使用SQL Server過程,並且有習慣在存儲過程中使用Print
語句來區分過程代碼。SQL過程中的打印語句應該會影響性能?
我的數據庫中有近200-250個程序。 應該打印聲明會影響性能嗎? 我正在處理多用戶Windows應用程序。
我在桌面上運行下面的代碼時發現,註釋掉打印後的執行時間大約減少了15秒,這意味着在我的簡單測試中平均衝擊爲15μs。 RAISERROR WITH NOWAIT
平均增加了一倍以上。
DECLARE @date DATETIME2
DECLARE
@count INT
SET @count = 1
SET @date = SYSUTCDATETIME()
WHILE @count < 1000000
BEGIN
--RAISERROR ('%d',0,1, @count) WITH NOWAIT
--PRINT @count
SET @count = @count + 1
END
SELECT DATEDIFF(MICROSECOND, @date, SYSUTCDATETIME())/1000000.
少數幾條PRINT
語句對於執行數千次循環的性能會產生微不足道的影響 - PRINT
s但是,這可能會導致性能問題。
如果您的查詢遇到性能問題,那麼PRINT
就是罪魁禍首 - 不過,如果有疑問,請嘗試一些實驗!
本質上說是一種額外開銷介紹給您的特定進程的整體的性能,因爲你問SQL Server來通輸出到客戶端,你不會否則做(即不使用的PRINT語句)。
從額定開銷的角度來量化額外開銷會對整體性能產生影響,這取決於您正在應用的額外開銷的多少。
換句話說,去測試一下吧。
剛剛嘗試過這個查詢,我總共用了17秒的「print @count」,和2,2秒的打印評論 – Shide 2014-06-26 10:03:14