MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。
(1)using where
使用了where子句来过滤元组
(2)using temporary
用临时表保存中间结果,常用于GROUP BY 和 ORDER BY操作中
(3)using filesort
使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。
(4)using index
不需要读取数据文件,从索引树(索引文件)中即可获得信息。如果同时出现using where,表明索引被用来执行索引键值的查找,没有using where,表明索引用来读取数据而非执行查找动作。
(5)using join buffer
使用了连接缓存:
Block Nested Loop,连接算法是块嵌套循环连接
Batched Key Access,连接算法是批量索引连接
(6)impossible where
where子句的值总是false,不能用来获取任何元组
(7)select tables optimized away
在没有GROUP BY子句的情况下,基于索引优化MIN/MAX操作,或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。
(8)distinct
优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作