Como você pode testar uma consulta que é lenta apenas na primeira execução?¹ São CHECKPOINT
eDBCC DROPCLEANBUFFERS
a ferramenta certa? Em caso afirmativo, executar isso como sysadmin é tudo o que é necessário ou há algo mais envolvido?
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
GO
Estou perguntando antes de não poder tornar a consulta mais lenta, a menos que eu reinicie a instância do SQL Server (que, obviamente, é dolorosamente lenta).
(1) Nada sutil: 35 s a 51 s na primeira corrida, cerca de 0,02 s depois
Reiniciar o Sql Server elimina o cache do plano, de modo que na primeira vez que a consulta é executada, um novo plano de execução deve ser construído. Confira oito maneiras diferentes de limpar o cache do plano do SQL Server .
Alternativamente, você pode tentar alterar o texto de sua consulta adicionando (ou removendo) alguns espaços extras ou linhas em branco que devem forçar a construção de um novo plano.
No entanto, eu ficaria bastante surpreso se levasse de 35 a 51 segundos para construir um novo plano.
Você pode verificar se a criação de um novo plano de execução faz parte de seu tempo de execução estendido emitindo
set statistics time on
uma sessão de consulta antes de executar sua consulta em um cache de plano vazio (ou onde você fez uma pequena alteração no texto da consulta, de modo que um novo é necessário um plano de execução). Na janela de mensagens do SSMS, procure algo assim:Além disso, dê uma olhada em Por que minha consulta é mais rápida na segunda vez que é executada?