Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SET NOCOUNT ON Nutzung

Ok, jetzt habe ich meine Nachforschungen angestellt, hier ist der Deal:

Im TDS-Protokoll SET NOCOUNT ON spart nur 9 Bytes pro Abfrage, während der Text "SET NOCOUNT ON" selbst satte 14 Bytes umfasst. Früher dachte ich, dass 123 row(s) affected wurde vom Server im Klartext in einem separaten Netzwerkpaket zurückgegeben, aber das ist nicht der Fall. Es ist tatsächlich eine kleine Struktur namens DONE_IN_PROC eingebettet in die Antwort. Es ist kein separates Netzwerkpaket, sodass keine Roundtrips verschwendet werden.

Ich denke, Sie können sich fast immer an das standardmäßige Zählverhalten halten, ohne sich Gedanken über die Leistung machen zu müssen. Es gibt jedoch einige Fälle, in denen die Berechnung der Anzahl der Zeilen im Voraus die Leistung beeinträchtigen würde, z. B. bei einem Nur-Vorwärts-Cursor. In diesem Fall könnte NOCOUNT eine Notwendigkeit sein. Abgesehen davon besteht absolut keine Notwendigkeit, dem Motto „Verwenden Sie NOCOUNT, wo immer möglich“ zu folgen.

Hier ist eine sehr detaillierte Analyse über die Bedeutungslosigkeit von SET NOCOUNT Einstellung:http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/