(02)执行计划

1. explain语法

explain select ...;

执行计划大致包含以下信息

2. 常用属性

2.1. id

1、如果id相同,那么执行顺序从上到下
2、如果id不同,值越大优先级越高,越先被执行
3、id相同和不同的都存在,相同的可以认为是一组,从上往下顺序执行,在所有组中,id值越大,优先级越高,越先执行

2.2. select_type

select_type 说明
SIMPLE 简单查询,查询中不包含子查询或者UNION
PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY
SUBQUERY 在SELECT或WHERE列表中包含了子查询,该子查询被标记为SUBQUERY
DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生)
UNION 若第二个SELECT出现在UNION之后,则被标记为UNION。若UNION包含在 FROM子句的子查询中,外层SELECT将被标记为DERIVED
UNION RESULT 从UNION表获取结果的SELECT被标记为 UNION RESULT

2.3. table

对应行正在访问哪一个表,表名或者别名

2.4. type

type是访问类型,效率从最好到最坏依次是:const>ref>range>index>all。一般情况下,得保证查询至少达到range级别,最好能达到ref

type 说明
all 遍历全表以找到匹配的行,一般情况下出现这样的sql语句而且数据量比较大的话那么就需要进行优化。
index 只遍历索引树。这个比all的效率要好
range 表示利用索引查询的时候限制了范围,在指定范围内进行查询,这样避免了index的全索引扫描,适用的操作符: =, <>, >, >=, <, <=, IS NULL, BETWEEN, LIKE, or IN()
ref 非唯一性索引扫描,返回匹配某个单独值的所有行
const 表示通过索引一次就找到了,const用于查找primary key 或者 unique索引。因为只需匹配一行数据,所有很快。

2.5. possible_keys

显示可能在这张表中使用到的索引,一个或多个。
注意:是列出可能使用到的索引

2.6 key

在这张表中实际使用到的索引,如果为null,则没有使用索引

2.7 rows

执行查询时,估算的找到所需的记录需要读取的行数

2.8 Extra

Extra 说明
Using index 此值表示mysql将使用覆盖索引,以避免访问表。
Using filessort 表示使用文件排序,说明order by 没有走索引
Using temporary 对查询结果排序时会使用临时表
Using where Using where的作用只是提醒我们MySQL将用where子句来过滤结果集
posted @ 2021-10-31 23:45  、嘎路的米。  阅读(89)  评论(0)    收藏  举报