Por que vários planos para uma consulta são ruins
Então eu estava correndo sp_Blitz
para controlar alguns sistemas. Tenho algum código para ser limpo como de costume. Alguns heaps que deveriam ser índices clusterizados. etc.
Essa consulta em particular estava usando literais, parecia resultar em muitos planos. Conseguiu a indexação e outras coisas classificadas nas tabelas nesta consulta e até mesmo parametrizou a consulta para o código/banco de dados mais recente para entrar em produção.
Mas ainda assim a consulta está aparecendo como um problema de parametrização. (O DBA transformou a consulta de cache do plano em um relatório do SSRS para que eu possa executá-los rapidamente no ambiente PROD do meu navegador).
Para onde ir a partir daqui? Ignore isto? (Parece que muitos planos contam)
Usar parametrização forçada? (Mas o que está explicitamente parametrizado está aparecendo).
Ugh - vejo que o desenvolvedor não seguiu meu conselho de que LEFT JOIN
estava sendo transformado em um INNER JOIN
... vou ter que consertar isso ...
Sem parametrização forçada, todas essas consultas de estilo literal nunca compartilharão o mesmo plano? Esta consulta é muito complicada para parametrização simples ?
Resposta do wiki da comunidade :
Se a consulta agora estiver parametrizada, você poderá ignorar todos os que ainda mostram literais constantes - esses estão no cache do plano agora, mas envelhecerão com o tempo.
Além da junção externa, que não é mais uma junção externa, é
SELECT *
necessária ou é possível que haja um par de índices mais fino que possa cobrir os requisitos de saída reais (geralmente algum subconjunto de*
)? Você também deve encorajar seus desenvolvedores a sempre usarem o prefixo do esquema, por exemploschema.object
.A parametrização simples só se aplica a planos triviais .
Considere também otimizar para cargas de trabalho ad hoc . Kimberly Tripp tem algumas boas orientações sobre como limpar o cache . Pense na parametrização forçada como último recurso, pois ela afetará todas as suas consultas, com alto risco de regressões de desempenho.