2008-08-25 16 views

Respuesta

18

De BOL SQL:

SET NOCOUNT ON evita el envío de mensajes DONE_IN_PROC al cliente para cada declaración en un procedimiento almacenado . Para los procedimientos almacenados que contener varias declaraciones que no retorno tantos datos reales, configuración conjunto NOCOUNT en ON puede proporcionar un significativo aumento de rendimiento , porque tráfico de red se reduce considerablemente.

Ver http://msdn.microsoft.com/en-us/library/ms189837.aspx para más detalles.
Además, este artículo sobre SQLServerCentral es grande en este tema:
Performance Effects of NOCOUNT

+0

Es * especialmente * obligatorio en consultas que utilizan cursores. –

8

Y no es sólo el tráfico de red que se reduce. Hay un impulso interno para SQL Server porque el plan de ejecución se puede optimizar debido a la reducción de una consulta adicional para averiguar cuántas filas se vieron afectadas.

4

Simplemente detiene el mensaje que muestra el número de filas efectuadas para enviar/mostrar, que proporciona un beneficio de rendimiento, especialmente si tiene muchas declaraciones que devolverán el mensaje. Mejora el rendimiento ya que se envían menos datos a través de la red (entre el servidor sql y el front-end).

Más contenido en BOL: SET NOCOUNT

1

Siempre tengo configurado en ON por las razones anteriores, pero si he puesto más de 1 resultado en su proc que podría estropear el código de cliente

0

personalmente me gusta para activar NOCOUNT para consultas que se ejecutan de forma manual y usan muchas declaraciones Print para enviar mensajes de depuración. De esta manera, la salida se vería menos como:

 
Updating usernames 
(287 rows updated) 

Done 
Updating passwords 
(287 rows updated) 

Done 
Doing the next thing 
(1127 rows updated) 

Done 

y más como

 
Updating usernames 
Done 

Updating passwords 
Done 

Doing the next thing 
Done 

Dependiendo de la sensibilidad de lo que va a actualizar, a veces es útil incluir los conteos; sin embargo, para scripts complejos con muchos resultados, normalmente prefiero dejarlos fuera.

0

SET NOCOUNT ON es una instrucción en línea, el servidor Sql envía un mensaje de vuelta al cliente. Esto se realiza para cada proceso (es decir, seleccionar, insertar, actualizar, eliminar).si se evita este mensaje podemos mejorar el rendimiento general de nuestra base de datos y también reducir el tráfico de red

Por EX:

mesa de declarar @ un (int id)

conjunto NOCOUNT en

insertar @ un SELECT 1 union select 2

conjunto NOCOUNT fuera

0

Detiene el mensaje que indica el número de filas afectadas por un Trans la declaración act-SQL se devuelve como parte de los resultados.

Cuestiones relacionadas