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 refiz essa consulta específica. Agora, o plano de consulta real é diferente (o que faz sentido).
A consulta agora é muito mais rápida. 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 de E / S, configurações da VM, reinicialização da instância do sql etc.) também podem estar causando a melhora 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 mesmo executar uma consulta diretamente a partir desse plano?
Aqui está o que eu tentei descobrir isso:
- Pesquisei nos livros que temos disponíveis no escritório ( Internos e Solução de Problemas Profissionais do SQL Server 2012 , Consultando o Microsoft SQL Server 2012 );
- Pesquisas do Google, por exemplo "executar consulta com base em plano de consulta específico"
- Pesquisas DBA.SE, por exemplo "executar plano de consulta" e "executar plano de execução"
- E, finalmente, uma que já respondeu minhas perguntas muitas vezes: verifique cuidadosamente "Perguntas que já podem ter sua resposta" antes de clicar em "Postar sua pergunta" :-)
Portanto, isso é possível? Se sim: como?
Respostas:
Sim.
Você precisa da
USE PLAN
dica.Em que você fornece o
XML
do primeiro plano.Embora não garanta que o plano seja exatamente o mesmo (por exemplo, operadores escalares de computação podem se movimentar, por exemplo), provavelmente será bem próximo.
fonte