我有一个关于如何MySQL优化查询的问题。如何使SQL查询使用索引范围扫描
select *
from pp
where 1
and timestamp >= '2016-01-01' and timestamp <= '2017-01-03'
and (s = 0 or s is NULL)
and (
from in (select col from Temp)
or
to in (select col from Temp2)
)
order by idx desc limit 0, 100;
Mysql在时间戳上使用全索引扫描并附加两个子查询。
我不明白为什么它不先使用时间戳上的索引范围扫描然后再应用子查询。
有没有特别的原因呢? 如果不是,我可以强制它使用索引范围扫描吗?
我不认为这个公式是正确的--OP在两次查找之间有'OR';你有效地说'AND'。 –
你是对的。我误解了OP的查询。我编辑了我的答案。 – Dario