我正在处理2个查询:
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.
我的问题:第一个查询不使用INDEX:
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
我应该使用哪个参数来启用INDEX,我的范围是否很大?
谢谢,
答案 0 :(得分:0)
MySQL可能已经确定避免更大范围的索引更有效,因为它最终会扫描整个表(基于优化器剪枝设置)。
我建议阅读MySQL查询优化:Controlling the Query Optimizer。更具体地说,看看optimizer prune levels。
以下是EXPLAIN
查询的更多信息:Optimizing queries with EXPLAIN