日期:2014-05-17  浏览次数:20985 次

用or查询时条件多会严重影响性能?
表中字段A上加了索引,查找时使用如下语句(由程序拼出的条件)

select * from table where A='11' or A='22' or....

总共有1000个or,查询非常慢,耗时几分钟。

而如果写成类似
select * from table where A in (select code from dictonary)

即使同样有1000个code,速度还是飞快。


观察这2个语句的执行计划,都差不多,A上用到了索引,总的开销也很小,但是效率明显差别,这是为什么呢?


------解决方案--------------------
估计你是sql语句解析花的时间多吧。
select * from table where A='11' or A='22' or....
你再执行几次看看,后面几次是不是会快?