MySQL中的执行计划

MySQL中的执行计划

在MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的;


一、Mysql整个查询执行过程


客户端向MySQL服务器发送一条查询条件;

服务器首先检查查询缓冲,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段;

服务器进行SQL解析、预处理、再由优化器生成对应的执行计划;

MySQL根据执行计划,调用存储引擎的API来执行查询;

讲结果返回给客户端,同时缓存查询结果;


二、如何启动执行计划


Explain select 投影列 from 表名 where 条件


三、Explain列分类


ID

select_type

Table

Type

Possible_keys

Key

Key_len

Ref

Rows

Fitered

Extra


四、ID


查询执行顺序;

Id值相同时表示从上向下执行;

Id值相同被视为一组;

如果是子查询,id值会递增,id值越高,优先级越高;


五、Select_type


每一步执行怎样的查询;
在这里插入图片描述


六、Table


显示这一行的数据是关于哪张表的;


七、partitions


数据来源;


八、Type


最重要的列,显示连接使用了何种类型。从最好到最坏的连接类型为system、const、 eq_reg、ref、range、index和all;
在这里插入图片描述


九、Possible_keys


查询条件字段涉及到的索引,可能没有使用;


十、Key


实际使用的索引。如果为null,则没有使用索引;


十一、Key_len


表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际 使用长度,理论上长度越短越好。Key_len是根据表定义计算而得出的,不是通过 表内检索出的;


十二、Ref


显示索引的哪一列被使用了,如果可能的话,是一个常量const;


十三、Rows


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


十四、Fitered


显示了通过条件过滤出的行数的百分比估计值;


十五、Extra


MySQL如何解析查询的额外信息;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值