2010-09-11 155 views

回答

10

我在桌面上运行下面的代码时发现,注释掉打印后的执行时间大约减少了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. 
+0

刚刚尝试过这个查询,我总共用了17秒的“print @count”,和2,2秒的打印评论 – Shide 2014-06-26 10:03:14

5

少数几条PRINT语句对于执行数千次循环的性能会产生微不足道的影响 - PRINT s但是,这可能会导致性能问题。

如果您的查询遇到性能问题,那么PRINT就是罪魁祸首 - 不过,如果有疑问,请尝试一些实验!

0

本质上说是一种额外开销介绍给您的特定进程的整体的性能,因为你问SQL Server来通输出到客户端,你不会否则做(即不使用的PRINT语句)。

从额定开销的角度来量化额外开销会对整体性能产生影响,这取决于您正在应用的额外开销的多少。

换句话说,去测试一下吧。