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

标签 mysql sql sql-server query-optimization

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

select *
from mytable
where 1=1

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

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

最佳答案

SQL Server:

第一个示例:

1=1 谓词会被 SQL Server 查询优化器自动删除,因为它始终为 true: enter image description here

第二个示例:

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

enter image description here

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

关于mysql - SQL Server 是否优化常量表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435420/

相关文章:

php - 帮助逻辑

sql-server - 添加凭据参数后无法在 SSMS 中运行 SQL Server 存储过程查询

C# Sql Server Express 未永久保存

mysql - Force Fluent migration to re-create dropped table——Using Fluent with Vapor 3 iOS Swift MySQL

php - 更新 Mysql 数据库的最快方法

sql - 查询类别/交易的唯一值

java - 获取 SQLServerException makeFromDriverError 消息 'could not prepare statement' 和 'The connection is closed'

MySQL:为什么 SUM 的结果是查询给出 NULL?

mysql - 奇怪的 MySQL 行为 - 查询优化帮助

sql - '..' 中的 'SELECT * FROM database..table' 是什么意思?