2008-08-25 5 views

Antwort

18

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

+0

Es ist * besonders * obligatorisch in Abfragen, die Cursor verwenden. –

8

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.

4

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

1

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

0

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.

0

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

0

Stoppt die Nachricht die Anzahl der Zeilen durch eine Trans betroffen anzeigt act-SQL-Anweisung wird als Teil der Ergebnisse zurückgegeben.