mysql-Explain

Explain

一、是什么

查看执行计划
使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。
explain主要用于分析查询语句或表结构的性能瓶颈。

二、能干什么

表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询

三、怎么用

EXPLAIN SQL语句;

EXPLAIN SELECT * FROM `tbl_emp`;

四、各字段解释

1. id ★

id 相同,执行顺序由上至下
id 不同,子查询,id值越大优先级越高
id相同不同,不同的按数字大小执行,相同的由上至下执行。

2. select_type

SIMPLE 			普通查询
PRIMARY			查询中包含任何子查询的最外层查询
SUBQUERY		子查询
DERIVED			子查询的结果形成的临时表
UNION			第二个select出现在union后被标为union若union在from子句的子查询中,外层select为DERIVED
UNION RESULT	从union表中获取结果的select

3. table

显示的数据是哪个表的

4. type ★

性能从1-7依次降低

all		7	全表扫描
index	6	index与all的区别为index类型只遍历索引树
range	5	只检索给定范围的行,使用一个索引来选择行between and,in
ref		4	非唯一性索引扫描,返回某个单独值的所有行
eq_ref	3	唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,PRIMARY KEY OR UNION
const 	2	通过索引一次就找到,PRIMARY KEY OR UNION 只匹配一行数据
system	1  	表只有一行记录
NULL	

5. possible_keys

查询涉及到的字段上若存在索引,则该索引被列出,但是不一定被查询实际使用

6. key ★

实际使用的索引,null没有使用。查询中若查询的字段刚好是设置的索引,则索引出现在key中。

7. key_len

显示的值为索引字段的最大可能长度,并非实际使用的长度。

8. ref

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

9. rows ★

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

10. Extra ★

显示十分重要的额外信息

Using filesort使用一个外部的索引排序
Using temporary使用了临时表保存中间结果,mysql在对查询结果排序时使用临时表。
Using index表示相应的select操作使用了覆盖索引,避免了访问表的数据行;如果同时出现using where ,表明索引被引用来执行索引值的查找 ;如果没有同时出现using where,表明索引用来读取数据而非执行查找动作
Using where表明使用了where过滤
using join buffer使用了连接缓存
impossible wherewhere子句的值总是false,不能用来获取任何元组
select table optimized away在没有group by 子句的情况下,基于索引优化min/max操作
distinct优化distinct操作,在找到第一匹配的元组后即停止找相同值的动作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CAFEBABE 34

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值