如果我在SQL Server中这样做.
select *
from mytable
where 1=1...does对1=1条件进行优化,还是对每一行进行实际评估?
我还想知道其他DBMSes在这方面的行为,特别是MySQL。
发布于 2014-03-16 15:44:51
Server:
第一个示例:
Server查询优化器自动删除1=1谓词,因为它始终是true:

第二个示例:
因为1=2谓词总是false,所以执行计划不包括从dbo.Customer表读取数据的数据访问操作符(Table / Index Scan / Seek)。相反,执行计划包括一个Constant Scan运算符,它将从dbo.Customer表返回列列表,而不带任何行。这是行动中的矛盾检测 :-)

注意:我使用了SQL Server 2012 Developer Edition。
发布于 2014-03-16 12:26:09
用EXPLAIN PLAN测试MySQL,用SET SHOWPLAN_ALL ON测试Server
https://stackoverflow.com/questions/22435420
复制相似问题