MySQL执行计划之type字段

MySQL执行计划之type字段

MySQL执行计划。说一下type字段。只说simple情况下的type字段(simple是单表查询,其他的查询的type也是一样的)。
type主要有:const、ref、range、index、all
一句话:执行计划就是优化器生成的访问存储引擎的一个计划表。type字段表示访问存储引擎的方式。
存储引擎只负责存取数据。
重点

  1. 存储引擎只负责存取数据。原则是条件判断都是在执行器,执行器判断符合条件就保留不符合就丢弃。但如果有某个条件是一个索引,那么存储引擎就可以用它来确定要返回数据的范围,仅此而已,不会做其他条件判断。
  2. 存储引擎的工作。无论什么访问方式,存储引擎首先都会快速定位到第一条符合范围的数据,然后再逐条返回给执行器,直到范围末尾。

type+key+extra,这三个决定了存储引擎的操作。
type:决定访问存储引擎的方式。简单说就是决定返回数据的范围。
key:(只考虑单表,以及不考虑联合索引的情况下)一个表可以有很多个索引,但执行引擎只会用其中一个索引key来查询数据,如果行信息不全,存储引擎就会回表查询。
extra:决定存储引擎的一些行为,是否需要回表、是否使用“索引下推”

参考:https://xiaolincoding.com/mysql/base/how_select.html

type字段

const:把一条数据返回给server层。精确查找,存储引擎根据索引锁定一条数据,并返回给server层。
ref:把多条数据返回给server层。和const差不多,就是锁定一条数据,然后往后遍历,如果和这条数据的索引值相同就返回给server层,直到不相同。
range:把一个范围的数据返回给server层。首先找到最左边的那条,然后遍历逐条返回给server层,直到范围最右边。
index:把整个索引每一条数据返回给server层(有可能需要回表再返回)。遍历整个索引每一条数据,如果覆盖索引,那么直接逐条返回,如果没有覆盖索引,那么每一条先回表查到整行数据再返回给server层。
all:把整个数据表(聚集索引)的每一行数据返回给server层。

extra字段

using where
using index 覆盖索引
file sort
等,就不重复造轮子了,具体看下面文章

https://blog.csdn.net/TQ20160412/article/details/126154108

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值