select_type :对应查询复杂,simple是简单查询,不包含子查询和union查询。复杂查询不怎么用到,不做介绍
table:表示正在访问的表
type:
ALL :表示全表扫描,数据库会从头到尾扫,或者limit限制
index:类似全表扫描,不过扫描的是索引。主要优点避免排序,缺点承担按索引次序读取整个表的开销。意味着如果随机次序访问行,会有大的开销。如果extra 显示 using idex 表示覆盖索引。它只扫描索引的数据,而不是按照索引次序的每一行。比按照索引次序扫描全表开销少的多。
range:范围扫描,起始于索引某一个点,返回匹配这个值域的行。通常带有between和where > < !=等。另外 in or 列表也会显示range扫描,不过类型不同于前者,这里不做论述。
ref :索引访问,返回所有匹配某个单值的行。可能找到多个符合条件的行,全表扫和查找的混合。此类索引只有使用非唯一索引或者唯一性索引的非唯一性索引前缀才会显示。
possible_keys :显示查询可能会使用到的哪些索引。列表中索引可能对优化木作用。
key :显示mysql决定采用那个索引优化对表的访问。若该索引没有出现在possible_keys中,可能采用的覆盖索引。即使没有where句子。
rows: mysql估计为了找到所需的行而要读取的行,rows值很重要,它决定采用哪个索引以及是否放弃索引改为全表。它是一个平均数,用来估算查找需要行而必须读取的平均值。
extra:额外信息。有一些重要值:
using index:表示使用覆盖索引,避免访问表
using where :mysql存储引擎检索行后再进行过滤
using filesort:mysql会对结果有一个外部索引排序,而不是按照索引次序从表里读取行。
using index conditon:使用了索引但是需要回表查询数据
using index & using where :查找使用了索引,但是需要的数据都能在索引列中找到,不需要回表查询数据。
using index & using where 和using index区别在于是否用了where
网友评论