查询:
select * from t where (a = '..' or a = '..') and b = '..'
此查询是否使用索引(a,b)?
答案 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
子句优化的限制。