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

时间:2009-03-13 15:22:17

标签: sql performance

where 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?

2 个答案:

答案 0 :(得分:2)

如果确实如此,你认为这对Stack Overflow来说是一个模糊的问题吗?

如果where子句的顺序很重要,请不要认为

  • 供应商会记录这一点。

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

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

  • 对于一种优化策略的微妙之处,会发生巨大的宗教战争。

由于这些都不是真的,你可以放心地将where子句分解为“conjunctive normal form”进行处理,原始结构完全丢失。

答案 1 :(得分:1)

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