1. type:
其扫描速度由快到慢: system > const > eq_ref > ref > range > index > ALL
- system:系统表,少量数据,往往不需要进行磁盘IO
- const:常量连接( 1.命中主键(primary key)或者唯一(unique)索引
2.被连接的部分是一个常量(const)值 ) - eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描
- ref:非主键非唯一索引等值扫描
- range:范围扫描
- index:索引树扫描
- ALL:全表扫描(full table scan)
2. extra
额外信息。
-
Using filesort:性能极差,需要进行优化 .
MySQL 对数据使用一个外部的文件内容进行了排序,而不是按照表内的索引进行排序读取。
在一个没有建立索引的列上进行了 order by,就会触发 filesort,常见的优化方案是,在 order by 的列上添加索引,避免每次查询都全量排序。 -
Using temporary:性能较低,往往也需要进行优化.
使用临时表保存中间结果,也就是说 MySQL 在对查询结果排序时使用了临时表,常见于order by 或 group by。
临时表存在两种引擎,一种是 Memory 引擎,一种是 MyISAM 引擎,如果返回的数据在 16M 以内(默认),且没有大字段的情况下,使用 Memory 引擎,否则使用 MyISAM 引擎 -
Using index:性能较好
表示 SQL 操作中使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高。 -
Using index condition:性能也较高,但不如 Using index
表示 SQL 操作命中了索引,但不是所有的列数据都在索引树上,还需要访问实际的行记录。 -
Using where:一般
表示 SQL 操作使用了 where 过滤条件。 -
Select tables optimized away:一般
基于索引优化 MIN/MAX 操作或者 MyISAM 存储引擎优化 COUNT(*) 操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即可完成优化。 -
Using join buffer (Block Nested Loop):性能往往也较低,需要进行优化
表示 SQL 操作使用了关联查询或者子查询,且需要进行嵌套循环计算。
网友评论