条件语句(例如如果别的)影响 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 可以获得自己的、正确的缓存执行计划。一个过程,一个查询。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)