优化包含'或'的sql查询

时间:2014-05-14 22:12:28

标签: mysql indexing

查询:

select * from t where (a = '..' or a = '..') and b = '..'

此查询是否使用索引(a,b)?

1 个答案:

答案 0 :(得分:1)

首先,我会尝试使用in

重写此内容
select *
from t
where a in ('..', '..') and b = '..';

其次,更好的指数是t(b, a)b没有任何问题,因为它只会在where子句中出现=一次。

第三,如果这些不加快查询速度,那么请使用union all

select *
from t
where a = '..' and b = '..'
union all
select *
from t
where a = '..' and b = '..';

这将解决where子句优化的限制。