explain 语句
select_type表
type
字段 | 描述 |
---|---|
id | select识别符。这是select的查询序列号,id的值越大优先级别越高,越先被执行,如果id相同,执行顺序右上至下 |
select_type | 表示select语句的类型。<br>==SIMPLE== 表示简单查询,其中不包括连接查询和子查询。<br>==PRIMARY== 主查询或者最外层的查询语句<br>==SUBQUERY== : 子查询<br>==UNION== :联合查询,union 后面的那张表就会表示成它<br>==UNION RESULT==: 联合结果 |
table | 表示这一行的数据是关于哪张表的。` |
partitions | 表分区 |
type | 表的连接类型<br>==ALL==: MySQL将遍历全表以找到匹配的行<br>==index==: index与ALL区别为index类型只遍历索引树<br>==range==:只检索给定范围的行,使用一个索引来选择行<br>==ref==: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值<br>==const、system==: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system<br>==NULL==: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成 |
possible_keys | 可能使用到的索引 |
key | 使用到的索引 |
key_len | 使用的索引长度 |
ref | 使用哪个列一起进行的查询 |
rows | 查询sql语句扫描的数据量,比不会很精确 属于约等于 |
Extra: | 一些额外的信息<br>==using index==:表示sql使用并且是覆盖索引的方式进行查询<br>==using where==: 根据条件进行过滤using where; <br>==using index==: using index condition;使用了索引,但是需要回表进行数据查询<br>==using filesort==: 在使用索引列进行排序时(order by 索引列)<br>==using temporary==: 当sql中存在去重,排序 合并 分组 |