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 condicionais

pode 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
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top