Posts explain的参数解析
Post
Cancel

explain的参数解析

参数意义

(1)id:查询的顺序号,一个句子包含多个查询时会有。id顺序列越大越先执行,相同则从上往下,NULL最后执行

(2)select_type:表示select子句的类型,具体如下

  • SIMPLE:不包含子查询或者UNION查询

  • PRIMARY:此查询为最外层查询(包含子查询)

  • SUBQUERY:子查询中的第一个SELECT

  • UNION:是UNION中的第二或者随后的查询

  • DEPENDENT UNION:是UNION中的第二或者随后的查询,取决于外面的查询

  • UNION RESULT

  • DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询

  • DERIVED:衍生,表示导出表的SELECT(FROM子句的查询)

(3)table

(4)type:具体如下

  • system:表里只有一行记录,相当于系统表

  • const:索引一次命中,匹配一行数据

  • eq_ref:唯一性索引扫描,对于每个索引,表中只有只有一条记录与之匹配

  • ref:非唯一性索引扫描,返回匹配某个值的所有记录

  • range:只检索给定范围的行,使用一个索引来选择行,一般用于between,<,>

  • index:遍历索引树

  • all:全表扫描

(5)possible_keys: mysql执行该sql语句时,可能用到的索引信息,实际不一定会用

(6)key:实际使用的索引

(7)key_len:表示查询优化器使用了索引的字节数,这个字段可以评估联合索引是否完全被使用

(8)rows:mysql查询优化器根据统计信息,估算该sql返回结果需要扫描读取的行数。索引优化后,扫描读取的行数越多,说明索引设置不对,或者传入的类型存在问题,需要继续优化

(9)filtered:返回结果的行占需要读到的行的百分比

(10)extra:

  • using filesort : 表示ysql对结果集进行外部排序,不能通过索引顺序达到排序效果。一般有using filesort都建议优化去掉,因为这样的查询cpu资源消耗大,延时大。

  • using index:覆盖索引扫描,表示查询在索引树中就可以查找所需数据,不用扫描表数据文件,往往说明性能不错

  • using temporary : 查询有使用临时表,一般出现于排序,分组和多表join的情况,查询效率不高,建议优 化。

  • using where : sq使用了where过滤效率较高。
This post is licensed under CC BY 4.0 by the author.

数据库学习bufferpool相关

mysql面试题总结