Was sind die Vor- und Nachteile des Drehens von NOCOUNT
in SQL Server-Abfragen? Was sind die Vor- und Nachteile der Deaktivierung von NOCOUNT in SQL Server-Abfragen?
Antwort
Von SQL BOL:
SET NOCOUNT ON verhindert das Senden von DONE_IN_PROC Nachrichten an den Client für jede Anweisung in einer gespeicherten Prozedur. Für gespeicherte Prozeduren, die mehr Aussagen enthalten, die nicht return viele tatsächlichen Daten zu tun, SET Einstellung NOCOUNT auf ON einen deutlichen Leistungsschub bieten kann, weil Netzwerkverkehr stark reduziert.
Weitere Details finden Sie unter http://msdn.microsoft.com/en-us/library/ms189837.aspx.
Auch dieser Artikel auf SQLServerCentral ist toll zu diesem Thema:
Performance Effects of NOCOUNT
Und es ist nicht nur der Netzwerkverkehr, reduziert wird. SQL Server verfügt über einen internen Boost, da der Ausführungsplan aufgrund der Reduzierung einer zusätzlichen Abfrage optimiert werden kann, um herauszufinden, wie viele Zeilen betroffen sind.
Es hört einfach die Nachricht, die die Anzahl der Zeilen für gesendet/angezeigt, in dem es einen Leistung Vorteil, vor allem bewirkt zeigt, wenn Sie viele Aussagen, die die Nachricht zurück. Es verbessert die Leistung, da weniger Daten über das Netzwerk (zwischen dem SQL-Server und dem Frontend) gesendet werden.
Mehr auf BOL: SET NOCOUNT
Ich habe es immer auf ON oben für die Gründe, aber wenn Sie mehr als 1 Ergebnis in Ihrem proc gesetzt haben könnte es mess up Client-Code
Ich persönlich mag Um NOCOUNT für Abfragen, die in einer manuellen Weise ausgeführt werden, zu drehen und viele Print
-Anweisungen verwenden, um Debugging-Meldungen auszugeben. Auf diese Weise würde sich die Ausgabe weniger wie:
Updating usernames (287 rows updated) Done Updating passwords (287 rows updated) Done Doing the next thing (1127 rows updated) Done
und mehr wie
Updating usernames Done Updating passwords Done Doing the next thing Done
Je nach Empfindlichkeit von dem, was Sie aktualisieren, manchmal ist es hilfreich, die zählt aufzunehmen; Bei komplexen Skripten mit vielen Ausgaben lasse ich sie jedoch normalerweise aus.
SET NOCOUNT ON ist eine online-Anweisung, Sql-Server sendet eine Nachricht zurück an client.dies wird für jeden Prozess durchgeführt (dh .. auswählen, einfügen, aktualisieren, löschen).Wenn Sie diese Meldung vermeiden können wir die Gesamtleistung für unsere Datenbank verbessern und auch den Netzwerkverkehr
Für EX reduzieren:
declare @a Tabelle (id int)
Satz nocount auf
einfügen @ a 1 wählen Union wählen 2
set off nocount
Stoppt die Nachricht die Anzahl der Zeilen durch eine Trans betroffen anzeigt act-SQL-Anweisung wird als Teil der Ergebnisse zurückgegeben.
Es ist * besonders * obligatorisch in Abfragen, die Cursor verwenden. –