示例
mysql> explain select id, username from edu_user order by id limit 2;
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+-------+
| 1 | SIMPLE | edu_user | NULL | index | NULL | PRIMARY | 98 | NULL | 2 | 100.00 | NULL |
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+-------+
1 row in set (0.05 sec)
字段说明
-
select_type 字段:查询的类型
示例:
SIMPLE:简单查询,不使用子查询、union。
PRIMARY:嵌套查询中的外层查询。
DERIVED:在 from 子句中的子查询。mysql会将子查询结果放在临时表。
UNION:union中第二个或者后面的查询语句。
- table 字段:explain访问的哪一张表
- type 字段:mysql查找表中行的范围
性能排序:
system > const > eq_ref > ref > range > index > all
all字段:全表扫描。
index字段:索引全扫描,遍历索引查询匹配的行。
range字段:索引范围扫描,常见于between、<、<=、>、>=。
ref字段:也是索引,但不是主键和unqiue,可能存在重复的情况。
eq_ref字段:与ref字段相比,必须得是唯一的。
const/system字段:根据主键或者唯一索引 unique index 查询结果。
- possible_keys 字段:mysql查找时候可能使用的索引。
- key 字段:mysql查找时候实际使用的索引。
- key_len 字段:mysql的索引使用的字节数。
- ref 字段:表查询用到的列。
- rows 字段:扫描的行数。
- Extra 字段:额外信息。
mysql> explain select username from edu_user order by create_time limit 2;
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+----------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+----------------+
| 1 | SIMPLE | edu_user | NULL | ALL | NULL | NULL | NULL | NULL | 7 | 100.00 | Using filesort |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+----------------+
1 row in set (0.07 sec)
网友评论