Tengo dos consultas t-sql con SqlServer 2005. ¿Cómo puedo medir el tiempo que tarda cada una en ejecutarse?
Usar mi cronómetro no es suficiente.
performance
sql-server-2005
TheMoot
fuente
fuente
Respuestas:
Un enfoque simplista para medir el "tiempo transcurrido" entre eventos es tomar la fecha y hora actuales.
En SQL Server Management Studio
Para calcular los tiempos transcurridos, puede tomar esos valores de fecha en variables y usar la función DATEDIFF:
Ese es solo un enfoque. También puede obtener los tiempos transcurridos para las consultas con SQL Profiler.
fuente
SET @t1 = GETDATE();
en la parte superior de mi consulta y luego pego enSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
puntos juiciosos dentro de la consulta (editando "NOTA 1" adecuadamente). Tratar las selecciones como puntos de interrupción en lugar de mediciones es semánticamente idéntico a su enfoque (aunque el conjunto final en @ t1 es falso, y esto supone que todas las consultas deben medirse). Esto es puramente una optimización mental / de escritura (una pasta por punto de interrupción, en lugar de dos pastas por consulta).Si desea una medición más precisa que la respuesta anterior:
Los resultados estarán en la ventana Mensajes .
Actualización (29/07/2015):
Por solicitud popular, he escrito un fragmento de código que puede usar para cronometrar la ejecución de un procedimiento almacenado completo, en lugar de sus componentes. Aunque esto solo devuelve el tiempo que tomó la última ejecución, hay estadísticas adicionales devueltas
sys.dm_exec_procedure_stats
que también pueden ser valiosas:fuente
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
de: technet.microsoft.com/en-us/library/ms190287.aspxTambién puedes ver esta solución
fuente
Otra forma es usar una característica incorporada de SQL Server llamada a la
Client Statistics
que se puede acceder a través de Menú> Consulta> Incluir estadísticas del cliente .Puede ejecutar cada consulta en una ventana de consulta separada y comparar los resultados que se dan en la
Client Statistics
pestaña junto a laMessages
pestaña.Por ejemplo, en la imagen a continuación, muestra que el tiempo promedio transcurrido para obtener la respuesta del servidor para una de mis consultas es de 39 milisegundos.
Puede leer las 3 formas de adquirir tiempo de ejecución aquí . Es posible que incluso necesite mostrar
Estimated Execution Plan
ctrlLpara una mayor investigación sobre su consulta.fuente
¡aún mejor, esto medirá el promedio de n iteraciones de su consulta! Genial para una lectura más precisa.
fuente
MICROSECOND
aMILLISECOND
y para borrar la memoria caché cada vez que me inserta siguiendo líneas entrebegin
ydeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Funciona como encanto y exactamente lo que estaba buscando. +1Haga clic en el icono de Estadísticas para mostrar y luego ejecutar la consulta para obtener los tiempos y saber qué tan eficiente es su consulta
fuente