繁体   English   中英

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

[英]SQL Server - Query Execution Plan For Conditional Statements

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

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

**编辑添加**:

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

DECLARE @condition BIT

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

你会经常用这种方法重新编译计划。 我通常会尝试拆分它们,所以你最终得到:

DECLARE @condition BIT

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

这种方式对最终用户没有区别,MyProc1和2获得了他们自己的,适当的缓存执行计划。 一个程序,一个查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM