好的,现在我已经完成研究,这是交易:
在TDS协议中,每个查询SET NOCOUNT ON仅保存9个字节,而文本“ SET NOCOUNT ON”本身高达14个字节。我曾经认为这123 row(s) affected是从服务器以纯文本形式在单独的网络数据包中返回的,但事实并非如此。实际上,它是DONE_IN_PROC响应中称为“ 嵌入” 的小结构。它不是一个单独的网络数据包,因此不会浪费往返时间。
我认为您几乎可以始终坚持默认计数行为,而不必担心性能。但是,在某些情况下,事先计算行数会影响性能,例如仅向前的游标。在这种情况下,可能需要NOCOUNT。除此之外,绝对没有必要遵循“尽可能使用NOCOUNT”的座右铭。
这是关于SET NOCOUNT设置的微不足道的非常详细的分析:http : //daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/



