我们来学mysql -- EXPLAIN之type(原理篇)

EXPLAIN之type

题记

  • 书接上文《 EXPLAIN之select_type
  • 2024美国大选已定,川普剑登上铁王座,在此过程中出谋划策的幕僚很重要,是他们决定了最终的执行计划
  • 在《查询成本之索引选择》中提到,explain的输出,就是优化器(幕僚)选择的执行计划
  • 除了SELECT开头的查询,DELETE、INSERT、UPDATE也都有执行计划,这里只关注SELECT
  • 从输出的计划中可见很多字段,传达了什么样的信息,接下来看type
  • 同时这里约束如何描述查询条件
    • 字段 = 值 ,字段 > 值,字段 in (值1,值2)
    • 字段 + 操作符 + 值 = 查询条件

示例表

  • 字段
    在这里插入图片描述

  • 索引
    在这里插入图片描述

type

  • 传达的信息就是《查询成本之索引选择》提到执行计划访问方法

  • 就是说,有无使用了索引,是聚簇还是二级

  • 说人话呢,用字典查字,是从目录找,还是一页页查

  • all访问方法

    • 从第一页开始查,查到为止(全表扫描),不叼索引
  • const访问方法

    • 通过主键或者唯一二级索引与常数进行匹配
    • 按人话说就是:
      • id(主键-聚簇索引)或某个编号(唯一二级索引)字段通过等号操作符作为查询条件
        EXPLAIN select * from ucoding where id = 7
        在这里插入图片描述

        EXPLAIN select * from ucoding where k2 = '10'
        在这里插入图片描述

  • ref访问方法

    • 普通二级索引列与常量等值匹配
    • 按人话说就是:
      • 姓名(普通二级索引,会有重复)字段+等号操作符构建出查询条件
        EXPLAIN select * from ucoding where k1 = 'Ra309'
        在这里插入图片描述
  • range访问方法

    • 看了上面的例子,估计有点飘了,仔细一看都是等号操作符
    • 等号操作符扫索引只是形成单点扫描区域,参考《使用索引
      • 如 id = 7 , 单点扫描区域是[7,7]
    • 那么range访问方法,扫描索引不同之处是,获取多个单点扫描区间的索引记录,或者范围扫描区间的索引记录
    • 按人话咋说?词穷了…如图表示
      • [3600,3600] 一个单点扫描区间

      • [3400,3400],[3600,3600] 多个个单点扫描区间

      • [1200,1300],[3600,3600] 范围扫描区间
        在这里插入图片描述

      • EXPLAIN select * from ucoding where k1 in ('Ra309','Wcc4d')
        在这里插入图片描述

      • select k1 from ucoding where 1 <= id and id <= 20
        在这里插入图片描述
        在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UCoding

说话好听~~

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

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

打赏作者

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

抵扣说明:

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

余额充值