MySQL的explain简书_MYSQL 之EXPLAIN

在日常开发中我们经常会碰到查询时间特别长的SQL语句(俗称慢SQL),为了提高系统的查询效率,我们需要对这些慢SQL进行优化总而提高用户的体验度。这个时候就要用到explain了,通过explain可以排查出该SQL的扫描范围,是全表扫描还是通过索引来查询。explain的使用如下所示:

日常开发中查询语句

select * from tb_user where username = '杨尼玛';

explain语句

explain select * from tb_user where username = '杨尼玛';

explain sql语句之后出来11列信息,如下图所示:

c6d468771d69

image.png

接着我们对上述的信息进行信息分析:

1 、id:选择标识符;

2、select_type:查询的类型,上图的查询类型为simple;

3、table:你查询的表,如上述sql语句中的tb_user表;

4、type:查询的类型,如全表查询、通过索引查询等;

5、possible_keys:查询时可能用到的索引;

6、key:查询时用到的索引;

7、key_len:索引字段的长度;

8、ref:ref:列与索引的比较;

9、rows:sql查询的记录(估算的行数);

10、filtered:按表条件过滤的行百分比;

11、Extra:执行情况的描述和说明;

12、partitions:匹配的分区

常用项解释

一:type:表示查询的类型,常见的类型有:ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)。

ALL:代表全表扫描;

index:表示该查询通过索引扫描;

range:只在给定的范围为检索或者扫描记录;

ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

eq_ref::类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件;

const、system::当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system;

NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成;

二:possible_key表示查询时可以使用那些索引在表中查找数据,但是该索引在实际查询中可能不使用。

三:key表示查询时实际用到的索引,该索引必须被possible_key包含。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值