Eu capturei um plano de consulta real para uma consulta específica.
Depois disso, mudei algumas coisas (incluindo a atualização das estatísticas) e executei novamente essa consulta específica. Agora, o plano de consulta real é diferente (o que faz sentido).
A consulta agora é executada muito mais rapidamente. Estou curioso para saber se o novo plano de execução tem algo a ver com isso, porque outras alterações (alterações na configuração do IO, configurações da VM, reinicialização da instância SQL, etc) também podem estar causando a melhoria no desempenho. Para testar isso, gostaria de executar a consulta mais uma vez e tentar forçar o SQL Server a usar o plano de execução antigo.
Pergunta : existe uma maneira de executar novamente uma consulta com um plano de execução fornecido pelo usuário ou até mesmo executar uma consulta diretamente de tal plano?
Aqui está o que eu tentei descobrir isso:
- Pesquisei nos livros que temos disponíveis no escritório ( Professional SQL Server 2012 Internals and Troubleshooting , Querying Microsoft SQL Server 2012 );
- Pesquisas do Google, por exemplo, "executar consulta com base em um plano de consulta específico"
- Pesquisas DBA.SE, por exemplo, "executar plano de consulta" e "reexecutar plano de execução"
- E, finalmente, uma que respondeu às minhas perguntas muitas vezes antes: verifique cuidadosamente "Perguntas que já podem ter sua resposta" antes de clicar em "Poste sua pergunta" :-)
Resumindo: isso é possível? Se sim: como?
Sim.
Você precisa da
USE PLAN
dica.Em que você fornece o
XML
desde o primeiro plano.Embora não garanta que o plano será exatamente o mesmo (por exemplo, operadores escalares de computação podem se mover, por exemplo), provavelmente será bem próximo.