Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Desempenho insatisfatório do plano de execução do procedimento armazenado do SQL - detecção de parâmetros


Basicamente sim - sniffing de parâmetro (em alguns níveis de patch de) SQL Server 2005 está muito quebrado. Já vi planos que efetivamente nunca são concluídos (dentro de horas em um pequeno conjunto de dados), mesmo para pequenos conjuntos de dados (alguns milhares de linhas) que são concluídos em segundos depois que os parâmetros são mascarados. E isso nos casos em que o parâmetro sempre foi o mesmo número. Eu acrescentaria que ao mesmo tempo em que estava lidando com isso, encontrei muitos problemas com LEFT JOIN/NULLs não completando e os substituí por NOT IN ou NOT EXISTS e isso resolveu o plano para algo que seria concluído. Novamente, um problema de plano de execução (muito ruim). No momento em que eu estava lidando com isso, os DBAs não me davam acesso ao SHOWPLAN e, desde que comecei a mascarar todos os parâmetros do SP, não tive mais problemas de plano de execução em que teria que me aprofundar nisso para não concluir .

No SQL Server 2008 você pode usar OPTIMIZE FOR UNKNOWN .