さて、私は調査を終えました。これが取引です:
TDSプロトコルでは、SET NOCOUNT ON
「SETNOCOUNTON」というテキスト自体がなんと14バイトであるのに対し、クエリごとに9バイトしか節約できません。以前は123 row(s) affected
と思っていました 別のネットワークパケットでプレーンテキストでサーバーから返されましたが、そうではありません。実際には、DONE_IN_PROC
と呼ばれる小さな構造です。 応答に埋め込まれています。個別のネットワークパケットではないため、ラウンドトリップが無駄になることはありません。
ほとんどの場合、パフォーマンスを気にすることなく、デフォルトのカウント動作に固執できると思います。ただし、前方専用カーソルなど、事前に行数を計算するとパフォーマンスに影響する場合があります。その場合、NOCOUNTが必要になる可能性があります。それ以外は、「可能な限りNOCOUNTを使用する」というモットーに従う必要はまったくありません。
SET NOCOUNT
の重要性に関する非常に詳細な分析を次に示します。 設定:http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/