紧接上文。性能
type字段有以下类型:优化
1.all.net
2.index设计
3.rangblog
4.ref索引
5.eq_refget
6.const,systemselect
7.nullim
最好到最差的顺序为:统计
system>const>eq_red>ref>range>index>all
优化的标准为至少达到range级别,最好是ref级别。
system 表只有一行记录,这是const类型的特列,基本不会出现。
const:表示经过一次就找到了,const 通常是在primary_key 或者 unique 索引。由于只匹配一行数据,因此很快。
eq_ref:惟一索引扫描,对每一个索引键,只有一条记录与之匹配。
ref:非惟一索引扫描,返回匹配某个值的全部行。
range:只检索给定范围的行,使用一个索引来选择行。通常出如今between、>、<、in等查询中。
index:select id from t1 这时候是找出所有的索引,而没必要去扫描表。
all 表示全表扫描来查询性能最低。
possible_key 显示可能应用在这张表中的索引,一个或者多个。
查询设计的字段上若存在索引,则该索引将会被列出,可是不必定被使用。
其实这个就是咱们写在where 中用到的索引。
key 为实际使用的索引。
有三种状况:
第一种:possible_key 为null ,而key 不为空,通常就是索引扫描,别名覆盖索引。
第二种:possible_key 有一个或者多个,而后key显示一个。
第三个:possible_key 为null,而后key为null。
key_len:表示索引中使用的字节数,可经过该列计算查询中使用的索引的长度。在不损失精确性的状况下,越短越好。
key_len 显示的值为索引字段的最大可能长度,并不是实际长度,即:key_len 是根据表定义计算而得,不是经过表内检索出的。
显示索引的那一列被使用了,若是可能的话,是一个常数。那些列或者常量被用于查找索引列上的值。
根据统计信息及索引选用状况,大体估算出找到所需的记录锁须要读取的行数。
每张表有优化器查询的行数,这个比较好理解。
显示是额外的信息。
这一篇比较详细:
http://www.javashuo.com/article/p-ugsjcqsm-mc.html
字段比较多,就不详细介绍了。