Mysql Explain工具介绍

Mysql Explain工具介绍

1.Explain的使用

Explain select * from tb_test; 

查询结果如下图:
在这里插入图片描述

2.Explain分析

select_type:

这个字段意思是查询类型,它有很多个值,这里就只介绍几种常见的值:
(1)simple: 简单查询不包含子查询或union;
(2)primary: 复杂查询最层的select;
(3)subquery: 在from之前的子查询;
(4)derived: 在from之后的子查询(相当于是创建了一个临时表);
例子:

EXPLAIN select (select 1 from tb_test where id = 1) from (select id from tb_user where id = 1) der;

在这里插入图片描述
如上图可见select_type里每一个字段后面table里面就是对应的他查询的表,而且上面的sql语句查询的顺序会根据查询的出来的结果id最大的优先查询,这里查出来的id有可能还是一样的,如果是一样的,就从上往下依次查询。

type:

这个字段个人觉得在这explain分析里面是比较重要的,可根据他的值进行sql优化,他的几个常见的值是 system<const<eq_ref<ref<range<index<all
一般来说得保证sql查询达到range级别,最好能优化到red。

(1)system、const:这两种级别查询效率是非常高了,const就是通过主键索引精准查询,而system可以说是const的一种特殊情况其实是const一种特殊情况,表里只有一条元组匹配时为system ,
EXPLAIN select * from (select * from tb_test WHERE id = 1) sub

在这里插入图片描述

(2)eq_ref:primary key 或 unique key 索引关联查询时,如:
EXPLAIN select ur.* from user_role ur 
left join role r on r.id = ur.role_id

在这里插入图片描述

(3)ref:它与eq_ref的主要区别就是,ref是用的不是唯一索引,例如:
EXPLAIN select * from user where name = 'zyl'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值