【问题标题】:Does the order of conditions in there where clause affect the speed of the query? [duplicate]where 子句中的条件顺序会影响查询的速度吗? [复制]
【发布时间】:2009-03-13 15:22:17
【问题描述】:

where子句中的条件顺序会影响查询的速度吗?

例如,可以:

select fname, lname 
from people 
where isValid = 1 and lname like '%test%'

快于

select fname, lname 
from people 
where lname like '%test%' and isValid = 1

重复: Does the order of columns in a WHERE clause matter?

【问题讨论】:

  • this question 的完全相同的副本。简短的回答是肯定的,但这取决于查询优化器。
  • 哪个 RDBMS?例如,在 Oracle 中,FROM 子句的顺序很重要。
  • @S.Lott,不,不是,不是基于成本的优化。

标签: sql performance


【解决方案1】:

如果是这样,您认为这会是 Stack Overflow 上的一个晦涩问题吗?

如果 where 子句的顺序很重要,你不觉得吗

  • 供应商会记录这一点。

  • 会有第三方工具来优化你的 where 子句。

  • 会有特殊的 JDBC 或 DAO 包装器,它们会根据您提供的某些标准重新排序您的 where 子句以优化性能。

  • 可能会因一种优化策略的微妙之处而引发巨大的宗教战争。

由于这些都不是真的,您可以放心地打赌,where 子句被分解为“合取范式”进行处理,原始结构完全丢失。

【讨论】:

    【解决方案2】:

    取决于query optimizer。一般来说,好的优化器会根据索引统计信息将顺序更改为最佳优化器。但并非所有数据库都有好的优化器。

    【讨论】:

      猜你喜欢
      • 2015-05-31
      • 2017-03-22
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多