Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SET NOCOUNT ON utilisation

Ok maintenant j'ai fait mes recherches, voici le deal :

Dans le protocole TDS, SET NOCOUNT ON n'enregistre que 9 octets par requête alors que le texte "SET NOCOUNT ON" lui-même fait 14 octets. Avant, je pensais que 123 row(s) affected a été renvoyé par le serveur en texte brut dans un paquet réseau séparé, mais ce n'est pas le cas. Il s'agit en fait d'une petite structure appelée DONE_IN_PROC intégré dans la réponse. Ce n'est pas un paquet réseau séparé, donc aucun aller-retour n'est gaspillé.

Je pense que vous pouvez vous en tenir au comportement de comptage par défaut presque toujours sans vous soucier des performances. Il existe cependant certains cas où le calcul préalable du nombre de lignes aurait un impact sur les performances, comme un curseur avant uniquement. Dans ce cas, NOCOUNT pourrait être une nécessité. En dehors de cela, il n'est absolument pas nécessaire de suivre la devise "utiliser NOCOUNT dans la mesure du possible".

Voici une analyse très détaillée sur l'insignifiance de SET NOCOUNT réglage :http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/