mysql中explain详解

一、什么是explain?

模拟优化器执行SQL语句,可以知道语句的执行过程,从面分析SQL语句或是表结构的性能瓶颈。

二、怎么使用?

# explain 语句
EXPLAIN SELECT APP_USER_ID_,PHONE_ FROM uc_front_user WHERE PHONE_ = '13471027409'

三、explain各个字段的意思?

1、id

查询的序列,表示表的加载顺序
三种情况:
1、id相同,从上往下执行
2、id不同,数值越大,优先级越高,越先执行
3、两种都有,id大的先执行,相同的由上往下执行
在这里插入图片描述
在这里插入图片描述

2、select_type(表的查询类型)

在这里插入图片描述
在这里插入图片描述

3、table

来自那一张表

4、partition

分区一般情况下我们的查询语句的执行计划的partitions列的值都是NULL

5、type

查询使用何种类型,从好到坏

null>system>const>eq_ref>ref>range>index>all

在这里插入图片描述

6、possible_key

可能用到的索引,一个或是多个

7、key

被用到的索引,null没有用到
在这里插入图片描述

8、key_len

用到索引的长度,在不损失精确性的前提下, 长度越短越好 。它是由这三个部分构成的。
● 对于使用固定长度类型的索引列来说,它实际占用的存储空间的最大长度就是该固定值,对于指定字符集的变长类型的索引列来说,比如某个索引列的类型是VARCHAR(100),使用的字符集是utf8,那么该列实际占用的最大存储空间就是100 × 3 = 300个字节,utf8mb4则是100 × 4 = 300个字节
● 如果该索引列可以存储NULL值,则key_len比不可以存储NULL值时多1个字节
● 对于变长字段来说,都会有2个字节的空间来存储该变长列的实际长度。
在这里插入图片描述
笔者这里PHONE_索引用用的是utf8mb4,长度为64,可以为null,所以key_len=64*4+1+2=259。

9、ref

显示索引的那一例被使用到,有可能是常量。不用关注。

10、rows

找到所需的数据,需要查找多少行。行数越少,就越好。

11、filtered

MySQL在计算驱动表扇出时采用的一个策略,不用关注。

12、extra

在这里插入图片描述
当extra字段中出现using filesort、using temporary信息,那就要进行语句优化了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值