我们正在进行一轮sql-server存储过程优化。我们发现明确适用于我们的一项建议是在每个程序的顶部“设置NOCOUNT ON”。 (是的,我已经看到了指出问题的帖子,具体取决于您运行存储过程的客户端对象,但这些对我们来说不是问题。)
所以现在我只想添加一些常识。如果SET NOCOUNT ON的好处只是每次都减少一些少量的网络流量,那么关闭我们只用于调试的存储过程中的所有PRINT语句也没有意义吗?
我看不出它会如何影响性能。 OTOH,实现起来有点麻烦,因为有些print语句是else子句中的唯一内容,所以你不能总是注释掉一行并完成。这种变化带来了一定的风险,所以如果它不能真正帮助的话,我不想这样做。
但我不认为在优化文章中的任何地方都没有删除打印语句。这是因为它是如此明显没有人不愿提及它吗?
答案 0 :(得分:0)
如果你在一个循环中调用PRINT(比如在通过行进行打印时打印),那么是的,你可以节省时间,如果你循环浏览足够的记录,它可能会非常重要。除此之外,除非你的存储过程本身在循环中重复调用,否则我不会在那里留下PRINT语句。对于小字符串,它们的性能通常应该可以忽略不计。
答案 1 :(得分:0)
我遇到了大量诊断数据被打印在存储过程中的问题,当从ADO.NET调用时导致错误(直接调用时没有错误)。遗憾的是,我无法回想起错误,但我添加了一个标志,因此诊断消息被包装在条件中以避免它们在生产中被发出。