Explain介绍
在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。但如果from中包含子查询,MySQL仍会执行该子查询,并把子查询的结果放入临时表中。
Explain中的列
① id列
id列的编号是select的序列号,有几个select就有几个id,并且id是按照select出现的顺序增长的,id列的值越大优先级越高,id相同则是按照执行计划列从上往下执行,id为空则是最后执行。
② select_type列
表示对应行是简单查询还是复杂查询。
1)simple:不包含子查询和union的简单查询
2)primary:复杂查询中最外层的select
3)subquery:包含在select中的子查询(不在from的子句中)
用如下图展示primary和subquery类型
4)derived:包含在from子句中的子查询。mysql会将查询结果放入一个临时表中,此临时表也叫衍生表。