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
答案 0 :(得分:2)
如果确实如此,你认为这对Stack Overflow来说是一个模糊的问题吗?
如果where子句的顺序很重要,请不要认为
供应商会记录这一点。
会有第三方工具来优化您的where子句。
根据您提供的某些条件,会有特殊的JDBC或DAO包装器重新排序您的where子句以优化性能。
对于一种优化策略的微妙之处,会发生巨大的宗教战争。
由于这些都不是真的,你可以放心地将where子句分解为“conjunctive normal form”进行处理,原始结构完全丢失。
答案 1 :(得分:1)
取决于query optimizer。通常,优秀的优化器会根据索引统计信息将顺序更改为最佳顺序。但并非所有数据库都有良好的优化程序。