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

devtools/2024/11/27 22:36:01/

EXPLAIN之ref

  • 题记
  • **ref**

题记

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

ref

  • 首先友情提示,不要和type字段ref值(ref访问方法)弄混淆

  • 和访问方法是有关联的,又不是所有的都有关联

    • 当type是 const
      EXPLAIN SELECT * from ucoding WHERE k2 IN ('6')
      在这里插入图片描述

    • 当type是 ref
      EXPLAIN SELECT * from ucoding WHERE k1 = '6'
      在这里插入图片描述
      EXPLAIN SELECT * from ucoding t1 join icoding t2 WHERE t1.k1 = t2.i_k1 在这里插入图片描述
      EXPLAIN SELECT * from ucoding t1 join icoding t2 on t1.k1 = UPPER(t2.i_k1)
      在这里插入图片描述

    • 当 type是 eq_ref、unique_subquery、index_subquery,看执行计划ref列的值,就能知道使用了索引,索引匹配的是啥

  • 见了如上的列子,估计心里有那么点感觉了

    • ref列展示的就是与索引列进行等值匹配的是啥东西
      • 使用等号操作符
      • 使用了索引列
    • 啥东西呢?
      • 常数
      • 某个列
      • 函数

http://www.ppmy.cn/devtools/137502.html

相关文章

anaconda pycharm 使用问题

刚开始使用这两个工具,有点混乱,今天终于明白了一点点。 首先,可以cmd进入后用conda 创建虚拟环境,用conda create --name env_name -y命令,比如我使用conda create python36 python3.6.13创建了名为python36的环境&a…

python+pytest+allure利用fix实现接口关联

我们在日常工作中如果有一个登陆接口 在查看别的b接口 我们就要频繁的 进行登陆操作 比如登陆-加入购车 登陆-查看某个模块 登陆-加入购物车 等等 如果每次都要写登陆接口 这样会产生大量冗余的代码 所以我们就可以定一个全局变量 就不需要每次都写 直接调用就可以 举个例…

Java后端如何进行文件上传和下载 —— 本地版

简介: 本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。 大体思路 1、文件上传 …

Swagger记录一次生成失败

最近在接入Swagger的时候遇到一个问题,就是Swagger UI可以使用的,但是/v3/docs 这个接口的json返回的base64类型的json,并不是纯json,后来检查之后是因为springboot3里面配置了json压缩。 Beanpublic HttpMessageConverters cusHt…

Java基础夯实——2.7 线程上下文切换

线程上下文切换(Thread Context Switching)是操作系统在多线程环境中,切换CPU从执行一个线程的上下文到另一个线程的上下文的过程。这种切换是实现多线程并发执行的核心机制之一。 1 上下文: 线程的上下文指线程在某一时刻的执行状态,如&am…

【前端学习笔记】AJAX、axios、fetch、跨域

1.介绍 AJAX(Asynchronous JavaScript and XML)异步的JS和XML。通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。 X…

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…

docker创建vue镜像

1.确保你已经安装了 Node.js 和 Vue CLI。 2.创建一个 Vue.js 项目(如果你还没有一个) vue create my-vue-app 3.进入目录 cd my-vue-app 4.构建vue.js npm run build 5.创建一个 Dockerfile 来构建 Vue 应用的 Docker 镜像: # 基于 Node 官方…