首先需要注意:MYSQL 5.6.3以前只能EXPLAIN SELECT; MYSQL5.6.3以后就可以EXPLAIN SELECT,UPDATE,DELETE。
关键参数一:type。显示访问使用了何种类型。效率是依次增高。
1.all:代表全表扫描。一般情况下,出现这样的sql语句时,而且数据量比较大,就要对sql进行一定的优化,性能最差。
2.index:查询的字段上就有索引。又叫索引全表扫描,把索引从头到尾扫一遍。
3.range:索引范围查询。常见于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等运算符的查询中。
4.ref:命中非唯一索引。ref可用于使用’=‘或’<=>'操作符作比较的索引列。
5.const:命中主键索引或者唯一索引。这种情况下,只会有一条数据。
关键参数二:key。
null:代表没有命中索引。
显示索引的名称(如表中显示的person_id):代表命中索引。
关键参数三:rows。
估算出所需数据需要读取的具体行数(不是精确值),直接反应sql找了多少数据,非常直观显示 sql的效率好坏。在完成目的的情况下,原则上是越少越好。
关键参数四:extra。sql的额外信息。
1.distinct:代表在select部分使用了distinc关键字。
2.using filesrt:代表排序并没有用到索引。
3.using temporary:代表查询时创建了临时表。