参数意义
(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过滤效率较高。