SQL Server是否优化常量表达式?

时间:2014-03-16 09:58:10

标签: mysql sql sql-server query-optimization

如果我在SQL Server中执行类似的操作......

select *
from mytable
where 1=1

... 1=1条件是否得到优化,或者实际上是否对每一行进行了评估?

我也有兴趣了解其他DBMS在这方面的表现,尤其是MySQL。

2 个答案:

答案 0 :(得分:2)

SQL Server:

第一个例子:

SQL Server查询优化器会自动删除

1=1谓词,因为它总是trueenter image description here

第二个例子:

由于1=2谓词始终为false,执行计划不包含数据访问运算符(Table / Index Scan / { {1}})从Seek表中读取数据。相反,执行计划包括一个dbo.Customer运算符,该运算符将返回Constant Scan表中没有任何行的列列表。这是contradiction detection的实际操作: - )

enter image description here

注意:我使用的是SQL Server 2012 Developer Edition。

答案 1 :(得分:0)

使用EXPLAIN PLAN表示MySQL,SET SHOWPLAN_ALL ON表示SQL Server