在ssis包中使用的存储过程中使用"Set NOCOUNT ON"有什么好处?

N.D*_*ddy 3 t-sql sql-server ssis sql-server-2008

当我正在浏览SQL Server的性能调优概念时,我在初始行中找到了使用"SET NOCOUNT ON"的存储过程,并在最后一行再次将其设置回"SET NOCOUNT OFF"将有助于提高性能.我怀疑这里是将存储过程与SSIS包一起使用时的有用方法.

Chr*_*ord 7

SET NOCOUNT ON可防止为存储过程中的每个语句向客户端发送DONE_IN_PROC消息.对于包含多个不返回实际数据的语句的存储过程,或者对于包含Transact-SQL循环的过程,将SET NOCOUNT设置为ON可以显着提高性能,因为网络流量大大减少.

来源BOL:SET NOCOUNT

  • @Paparazzi 我认为你错过了重点,或者没有意识到可扩展性是关于延迟和往返,而不是带宽。这就是为什么批处理语句比执行单个语句更快的原因。也许你应该检查[分布式计算的谬论](https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing),特别是#2和7 (4认同)
  • @狗仔队不,不是。没有返回值的调用意味着没有理由为其使用缓冲区或通过网络发送回任何内容。数据库旨在处理数千个请求,小的改进加起来 (3认同)