3

条件语句(如IF ... ELSE)如何影响 SQL Server(2005 及更高版本)中的查询执行计划?

条件语句是否会导致执行计划不佳,在考虑性能时是否需要注意任何形式的条件?

**编辑添加**:

我特指缓存的查询执行计划。例如,在下面的实例中缓存查询执行计划时,是否为条件的每个结果缓存了两个执行计划?

DECLARE @condition BIT

IF @condition = 1
BEGIN
    SELECT * from ...
END
ELSE
BEGIN
    SELECT * from ..
END
4

1 回答 1

2

你会经常用这种方法重新编译计划。我通常会尝试将它们分开,因此您最终会得到:

DECLARE @condition BIT

IF @condition = 1 
BEGIN 
 EXEC MyProc1
END 
ELSE 
BEGIN 
 EXEC MyProc2
END

这样对最终用户没有区别,并且 MyProc1 和 2 获得自己的、适当的缓存执行计划。一个过程,一个查询。

于 2008-11-14T11:41:01.687 回答