EXPLAIN
在没有索引的情况下运行此查询
EXPLAIN SELECT exec_date,
100 * SUM(CASE WHEN cached = 'no' THEN 1 ELSE 0 END) / SUM(1) cached_no,
100 * SUM(CASE WHEN cached != 'no' THEN 1 ELSE 0 END) / SUM(1) cached_yes
FROM requests
GROUP BY exec_date
这是输出
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE requests ALL NULL NULL NULL NULL 478619 Using temporary; Using filesort
如果我创建一个索引
ALTER TABLE requests ADD INDEX exec_date(exec_date);
输出是
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE requests index NULL exec_date 4 NULL 497847
由于 的值为Extra
空白,这是否意味着exec_date
未使用密钥?
在测试服务器上,有和没有索引的实际(不是EXPLAIN
语句)查询的执行时间是相同的。