mysql 从新整理——索引优化explain字段介绍二 [十]

前言

紧接上文。性能

正文

type

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 、 key、key_len

possible_key 显示可能应用在这张表中的索引,一个或者多个。

查询设计的字段上若存在索引,则该索引将会被列出,可是不必定被使用。

其实这个就是咱们写在where 中用到的索引。

key 为实际使用的索引。

有三种状况:

第一种:possible_key 为null ,而key 不为空,通常就是索引扫描,别名覆盖索引。

第二种:possible_key 有一个或者多个,而后key显示一个。

第三个:possible_key 为null,而后key为null。

key_len:表示索引中使用的字节数,可经过该列计算查询中使用的索引的长度。在不损失精确性的状况下,越短越好。

key_len 显示的值为索引字段的最大可能长度,并不是实际长度,即:key_len 是根据表定义计算而得,不是经过表内检索出的。

ref

显示索引的那一列被使用了,若是可能的话,是一个常数。那些列或者常量被用于查找索引列上的值。

rows

根据统计信息及索引选用状况,大体估算出找到所需的记录锁须要读取的行数。

每张表有优化器查询的行数,这个比较好理解。

extra

显示是额外的信息。

这一篇比较详细:

http://www.javashuo.com/article/p-ugsjcqsm-mc.html

字段比较多,就不详细介绍了。

相关文章
相关标签/搜索