Eu tenho duas consultas t-sql usando o SqlServer 2005. Como posso medir quanto tempo leva para cada uma ser executada?
Usar o cronômetro não é suficiente.
performance
sql-server-2005
TheMoot
fonte
fonte
Respostas:
Uma abordagem simplista para medir o "tempo decorrido" entre os eventos é apenas pegar a data e hora atuais.
No SQL Server Management Studio
Para calcular os tempos decorridos, você pode capturar esses valores de data em variáveis e usar a função DATEDIFF:
Essa é apenas uma abordagem. Você também pode obter tempos decorridos para consultas usando o SQL Profiler.
fonte
SET @t1 = GETDATE();
a parte superior da minha consulta eSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
colo em pontos criteriosos da consulta (editando "NOTA 1" adequadamente). Tratar as seleções como pontos de interrupção em vez de medições é semanticamente idêntico à sua abordagem (embora o conjunto final para @ t1 seja espúrio e isso pressuponha que todas as consultas devam ser medidas). Isso é puramente uma otimização mental / de digitação (uma pasta por ponto de interrupção, em vez de duas pastas por consulta).Se você deseja uma medida mais precisa do que a resposta acima:
Os resultados estarão na janela Mensagens .
Atualização (29/07/2015):
Por solicitação popular, escrevi um trecho de código que você pode usar para cronometrar a execução de um procedimento armazenado inteiro, em vez de seus componentes. Embora isso retorne apenas o tempo gasto na última execução, há estatísticas adicionais retornadas
sys.dm_exec_procedure_stats
que também podem ter valor:fonte
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
from: technet.microsoft.com/en-us/library/ms190287.aspxVocê também pode ver esta solução
fonte
Outra maneira é usar um recurso interno do SQL Server chamado
Client Statistics
acessível através de Menu> Consulta> Incluir Estatísticas do Cliente .Você pode executar cada consulta na janela de consulta separada e comparar os resultados fornecidos na
Client Statistics
guia ao lado daMessages
guia.Por exemplo, na imagem abaixo, mostra que o tempo médio decorrido para obter a resposta do servidor para uma de minhas consultas é de 39 milissegundos.
Você pode ler todas as três maneiras de adquirir tempo de execução aqui . Pode ser necessário exibi-lo
Estimated Execution Plan
ctrlLpara uma investigação mais aprofundada sobre sua consulta.fonte
melhor ainda, isso medirá a média de n iterações da sua consulta! Ótimo para uma leitura mais precisa.
fonte
MICROSECOND
queMILLISECOND
e para limpar o cache de cada vez que eu inseri seguinte linhas entrebegin
edeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Funciona como charme e exatamente o que eu estava procurando. 1Clique no ícone Estatísticas para exibir e, em seguida, execute a consulta para obter os horários e saber a eficiência da sua consulta.
fonte