explain执行计划
explain可以输出SQL语句执行的信息,常用的语法格式为EXPLAIN SELECT statement
explain输出列如下:
id 标识号select_type 查询类型table 表名称partitions 匹配的分区type 连接类型possible_keys 可能/可以用到的索引key 实际选择的索引key_len 选择的索引的长度refrows 找到记录需要读取的行数的估计值extra 额外的信息
id
查询标识,是一个有序的数字。
select_type
查询类型,值包含以下几种
- SIMPLE 语句没有用union和子查询
 - PRIMARY 最外层的查询
 - UNION union语句中的第二个查询
 - DEPENDENT UNION union语句中的第二个查询,依赖外层查询
 - UNION RESULT union语句查询结果
 - SUBQUERY select语句中的第一个子查询
 - DEPENDENT SUBQUERY select语句中的第一个子查询,依赖外层查询
 - DERIVED 派生表
 - DEPENDENT DERIVED 派生表,依赖另一个表
 - MATERIALIZED 物化子查询
 - UNCACHEABLE SUBQUERY 子查询的结果不能被缓存,外部查询每一行需要重新计算
 - UNCACHEABLE UNION 不可缓存的union语句中的第二个查询
 
type
描述表时如何被连接的,以下按由好到坏列出各个值
- system 表中只有一行
 - const 表中最多有一个匹配行,如果将一个主键放置到where后面作为条件查询,mysql优化器就能把这次查询优化转化为一个常量
 - eq_ref 表中的某行数据读取需要循环前面表中的行,它用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY
 
