我正在处理两个查询:
EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20130501000000
AND date_added <20140531235959和
EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20140501000000
AND date_added <20140531235959第一个查询处理1079470行,第二个查询处理14942行。
我的问题是:第一个查询没有使用索引:
1 SIMPLE table1 ALL PRIMARY,date_added NULL NULL NULL 1079470 Using where而第二个则是:
1 SIMPLE table1 range PRIMARY,date_added date_added 8 NULL 14942 Using where无论我的范围是大还是不大,我应该使用什么参数才能使用索引?
谢谢,
发布于 2014-05-23 17:06:54
MySQL很可能已经确定在较大的范围内避免索引更有效,因为它无论如何都会扫描整个表(基于优化器的修剪设置)。
我建议阅读有关MySQL查询优化的内容:Controlling the Query Optimizer。更具体地说,看看optimizer prune levels。
以下是有关EXPLAIN查询的更多信息:Optimizing queries with EXPLAIN
https://stackoverflow.com/questions/23825040
复制相似问题