小编典典

SQL Server-条件语句的查询执行计划

sql

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

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

编辑添加

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

DECLARE @condition BIT

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

阅读 153

收藏
2021-05-30

共1个答案

小编典典

使用这种方法,您将经常获得计划的重新编译。我通常会尝试将它们分开,所以您最终得到:

DECLARE @condition BIT

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

这样,最终用户就不会有任何差异,而MyProc1和2将获得他们自己的,适当的缓存执行计划。一个过程,一个查询。

2021-05-30