SQL过程中的打印语句应该会影响性能?
问题描述:
我正在使用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