开发者学堂课程【MySQL 高级应用 - 索引和锁:Explain 之 type 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8601
Explain 之 type 介绍
一.释义
对 SQL 的优化和是否是最佳状态息息相关,他的值有多个
1. 访问类型排列
2. 显示查询使用了何种类型
3. 从最好到最差依次是:
system > const > eq _ ref > ref > range > index > ALL
为什么all是最差的呢?
不要过度优化,最好的程序是不优化,不要为了优化而优化。上百万的,性能开始下降。
【只要达到 range 和 ref 级别。】type 显示的是访问类型,是较为重要的一个指标,
结果值从最好到最坏依次是:
system > const > eq _ ref > ref > fultext > ref _ or _ nul > index merge > unique subquery index _ Subquery > range > index
system > const > eq _ ref > ref > rang > index > ALL
【工作中常见的】
一般来说,得保证查询至少达到 range 级别,最好能达到 ref .
单表单行很快,但是没有技术含量没有意义。
各字段释义:
1. system:表只有一行记录【等于系统表】,这是 const 类型的特例,平时不会出现,这个也可以忽略不计
2. Const:表示通过索引一次就找到了,const 用于比较 primary key 或者 unique 索引。因为只匹配一行数据。所以很快。
如将主键置于 where 列表中, MySQL 就能将该查询转换为一个常量
3. Eq-ref :唯一性素引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
4. Ref :非唯一性索引扫描,返回匹配某个单独值的所有行.
本质上也是一种索引访间,它返回所有匹配某个单独值的行,然而,
它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。
5. Range :只检索给定范围的行,使用一个索引来选择行。key 列显示使 了哪个索引一般就是在你的 where 语句中出现了 betveen 、<、>、 in 等的查询。
raig这种范围扫描索引扫描比全表扫描要好,因为它只儒要开始于索引的某一点,而结東语另一点,不用扫描全部索引。
mysql> explain select fron ( select fron t1 where id d1;
I id I select _ type Itable l typel
l 1IPRIMARY I Isysten
12IDERIUED I const mysq1> l t1
2 rows in set (0.00 sec )
mysql> explain select fron t1 t2 where t1.id=t2.id; Iid Iselect _ type Itable Itype
SIMPLE I t2 I ALL
I 1ISIMPLE I t1 i
时_ ref mysq1>
2 rows in set (0.00 sec )
mysql> ekplain SELEC Т. FRO Н HERE 1d betveen 30 and 60;
I 1d Iselect _ type Itable ItypeIpossible _ keys Ikey Ikey_
len I ref I rous IExtra
1ISIHPLE It1 Irange IPRI Н ARY IPRIARY I HULL 1 IUsing here
1 row in set (0.00sec)
WeenC
ysq1
》 ekplain select fron tHuhere 1d n (1,2,6):
I1d Iseleet _ type Itable Itype
| possible _ keys Ikey Ikey_len I
仅类型只遍
PRI И RY PRIHMRV
但 index
1
行 mysql
最好能达到
mysql> explain select Fr00t1uherec01UП_1tn0ut_indnx
id I select _ type Itable Itype Ipossible _ keys Ikey Ikey _len I ref I rous IExtra
1 ISIMPLE I t1 I ALLINULL INULL INULLINULL I516 IUsing uhere 1
row in set (0.00 sec )