2010-09-11 12 views
9

Estoy usando procedimientos de SQL Server y tengo el hábito de utilizar las declaraciones Print en los procedimientos almacenados para diferenciar el código de procedimiento.Imprimir instrucción en el procedimiento SQL debería afectar el rendimiento?

Tengo casi 200-250 procedimientos en mi base de datos. ¿La declaración de impresión debería afectar el rendimiento? Estoy trabajando en la aplicación de Windows multiusuario.

Respuesta

10

Encontré al ejecutar en la parte de abajo de mi escritorio que al comentar la impresión detuve unos 15 segundos del tiempo de ejecución, lo que significa que el impacto promedio fue de 15 μs en mi prueba simple. RAISERROR WITH NOWAIT agregó un promedio de algo más del doble.

DECLARE @date DATETIME2 

DECLARE 
    @count INT 

SET @count = 1 

SET @date = SYSUTCDATETIME() 

WHILE @count < 1000000 
BEGIN 
--RAISERROR ('%d',0,1, @count) WITH NOWAIT 
--PRINT @count 
    SET @count = @count + 1 
END 

SELECT DATEDIFF(MICROSECOND, @date, SYSUTCDATETIME())/1000000. 
+0

acaba de intentar esa consulta, tuve un total de 17 segundos con el "print @count", y 2,2 segundos con la impresión comentada – Shide

5

Un puñado de sentencias PRINT tendrán un efecto insignificante en el rendimiento: PRINT s en bucles que se ejecutan miles de veces, sin embargo, pueden causar problemas de rendimiento.

Es poco probable que si tiene problemas de rendimiento con sus consultas, PRINT es el culpable, sin embargo, en caso de duda, intente algunos experimentos.

0

Esencialmente no es un sobrecarga adicional introducido en el rendimiento general del proceso dado, ya que está pidiendo SQL Server para salida de paso para el cliente, que no estaría haciendo lo contrario (es decir, sin el uso de la declaración PRINT).

Cuantificar una carga adicional, en términos de su impacto en el rendimiento general, dependerá de la cantidad de sobrecarga adicional que esté aplicando.

Así que en otras palabras, ve y pruébalo.

Cuestiones relacionadas