Estou explorando o tópico de guias de plano. Parece fácil, desde que vejamos os exemplos na documentação.
O problema é que não consigo encontrar nenhum exemplo funcional (nem consegui descobrir sozinho) para definir um plano fixo para um procedimento armazenado ou uma instrução dentro do procedimento.
Eu li muitas postagens de blog, mas todas elas apenas copiam/colam exemplos de documentos da Microsoft.
Alguém mais criativo/experiente?
Aqui está um exemplo de como forçar um plano para uma instrução dentro de um procedimento usando um guia de plano:
Agora gere o plano de execução para esta instrução com uma estratégia de junção forçada:
Copie o XML do plano de execução e cole-o na janela de consulta. Substitua qualquer ocorrência de '(aspas simples) por ''''( quatro aspas simples).
Seu parâmetro final para o procedimento sp_create_plan_guide estará no formato:
Agora você pode ver por que quatro aspas: escape uma vez para colocar o XML dentro de uma string literal, escape duas vezes para colocar o XML dentro de uma string literal dentro de outra string literal.
Certifique-se de que o plano XML seja colado logo após
OPTION (USE PLAN N''
: qualquer espaço em branco ou nova linha o tornará inválido.Tendo cavado um pouco mais, encontrei uma solução alternativa em Itzik Ben-Gans et.al. Livro de programação T-SQL . Sua solução usa sp_create_plan_guide_from_handle .