SQL Server - Consulta Execução Demonstrações Plano Para condicionais
-
08-07-2019 - |
Pergunta
Como fazer declarações condicionais (como if ... else ) afetam o plano de execução de consulta no SQL Server (2005 e acima)?
instruções condicionaispode causar planos de execução pobres, e há alguma forma de condicionais que você precisa para ser cauteloso ao considerar o desempenho?
** Editado para adicionar **:
Estou especificamente referindo-se ao plano de execução de consulta em cache. Por exemplo, quando o cache o plano de execução da consulta na instância inferior, são dois planos de execução em cache para cada um dos resultados da condicional?
DECLARE @condition BIT
IF @condition = 1
BEGIN
SELECT * from ...
END
ELSE
BEGIN
SELECT * from ..
END
Solução
Você obterá recompilações plano, muitas vezes com essa abordagem. Eu geralmente tentar separá-los, para que você acabar com:
DECLARE @condition BIT
IF @condition = 1
BEGIN
EXEC MyProc1
END
ELSE
BEGIN
EXEC MyProc2
END
Desta forma, não há diferença para os usuários finais, e MEUPROC1 & 2 obter os seus próprios, planos adequados de execução em cache. Um processo, uma consulta.