症状
在 Microsoft SQL Server 2012 或 SQL Server 2014 中运行查询时,如果满足以下条件,则 SQL Server 2012 中会生成一个不够理想的执行计划:
-
查询包含Case、if、 WhenThen和Else语句。
-
For 语句有 一个计算结果为 "false" 的常量条件。
-
Then语句包含Select子句。
注意
-
在执行计划中,对 Then 语句进行求值,并将其与 isFalseOrNull(0)进行比较。 但是,for 语句的 计算结果始终为 "false"。
-
Microsoft SQL Server 2008 R2 中不会出现此问题
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新7 /en-us/help/2894115
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。