mysql执行计划explain属性解析

举报
负债程序猿 发表于 2022/02/18 23:57:13 2022/02/18
【摘要】 所谓执行计划就是看sql执行情况,有没有走索引啊之类的 很简单,在你的select语句前面加个EXPLAIN就行 比如我的查询语句是 SELECT * FROM pool WHERE operatin...

所谓执行计划就是看sql执行情况,有没有走索引啊之类的

很简单,在你的select语句前面加个EXPLAIN就行

比如我的查询语句是
SELECT * FROM pool WHERE operating_status = “OFFLINE”
那他的执行计划就这么看

EXPLAIN SELECT * FROM pool WHERE operating_status = "OFFLINE"

  
 
  • 1

反馈结果:
在这里插入图片描述
从这个反馈就能看出你这个sql的执行情况

字段含义:

id:如果是子查询,表示各个子查询的顺序

id相同:执行顺序由上往下
id不同:id大的先执行
id为空:表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中

select_type:查询的类型

SIMPLE:简单select查询
PRIMARY:包含子查询的最外层查询,比如select * from tableA where id = (select b_id from tableB where name = “蔡徐鸡”)
SUBQUERY:在select或 where子句中包含的查询,比如select * from tableA where id = (select b_id from tableB where name = “蔡徐鸡”)
DERIVED:from子句中包含的查询
UNION:出现在union后的查询语句中
UNION RESULT:从UNION中获取结果集当前执行计划的最后一条记录

table:查询中涉及到的表

如果表有别名那就显示别名

type:访问类型
这个属性值很重要,代表访问类型,性能由上往下逐渐降低

system:表只有一行:system表。这是const连接类型的特殊情况。
const :表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。
eq_ref:对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用。
ref:只有在查询使用了不是唯一或主键的key或者是这些类型的部分(比如,利用最左边前缀)时发生。
range:使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况。
index:对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)。
ALL:对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免。

possible_keys:可能用到的索引

查询涉及字段上若存在索引,就会列出来。当该列为 NULL时就要考虑当前的SQL是否需要优化了

key:实际用的索引

查询中实际使用的索引,若没有使用索引,显示为Null

key_length:索引长度

char()、varchar()索引长度的计算公式:(Character Set:utf8mb4=4,utf8=3,gbk=2,latin1=1) * 列长度 + 1(允许null) + 2(变长列)

ref:连接匹配条件

表示上述表的哪些列被用于查找索引列上的值,如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func。

rows:估算的查询结果行数

估算的,可能不准确

extra:附加信息
这个属性值也很重要

Using index:使用覆盖索引
Using where:使用了用where子句来过滤结果集
Using filesort:使用文件排序,使用非索引列进行排序时出现,非常消耗性能,尽量优化
Using temporary:使用了临时表

文章来源: huangjie.blog.csdn.net,作者:负债程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:huangjie.blog.csdn.net/article/details/115201041

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。