O SQL Server mantém informações estatísticas sobre todas as consultas em várias tabelas. Você pode usar o código a seguir para determinar qual é a consulta mais longa em execução (da tabela sys.dm_exec_query_stats
).
Você deve executar os seguintes comandos DBCC:
Este comando DBCC limpa o cache do servidor e reinicia o registro do tempo de execução da consulta:
DBCC FREEPROCCACHE
Execute esta consulta para encontrar a consulta mais longa:
SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time DESC
GO
Você também deve dar uma olhada no artigo da revista Technet Otimizando Desempenho de Consulta do SQL Server , que tem uma consulta para determinar qual consulta é a consulta de E / S de leitura mais cara, além de orientações sobre como observar planos de execução e outras otimizações.