mysql explain ref const_MySQL EXPLAIN 详解

2023-11-17

一 .介绍

EXPLAIN 命令用于SQL语句的查询执行计划。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。

先解析一条sql语句,你可以看出现什么内容

EXPLAIN SELECT * FROM person,dept WHERE person.dept_id = dept.did and person.salary >20000

2f1ba78d8615e3232cb34eb39a66c8f6.png

下面咱们详细的介绍一下 查询计划的结果列:

二. id : 查询序列号

查询序号即为sql语句执行顺序

EXPLAIN select * from person where dept_id =(select did from dept where dname ='python');

2ad630790fa9d76f7c9424dc80c2f51e.png

从 2 个表中查询,对应输出 2 行,每行对应一个表, id 列表示执行顺序,id 越大,越先执行,id 相同时,由上至下执行。

三.select_type :查询类型

select_type 列提供了 对表的查询类型。最常见的值包括SIMPLE、PRIMARY、DERIVED 和UNION。其他可能的值还有 UNION RESULT、SUBQUERY 等等.

2.1  simple 简单查询 (没有union和子查询)

对于不包含子查询和其他复杂语法的简单查询,这是一个常见的类型。

EXPLAIN SELECT * FROM person;

238252f61e77378c6737919d2e1eee8c.png

2.2 primary  最外层查询 (在存在子查询的语句中,最外面的select查询就是primary)

这是为更复杂的查询而创建的首要表(也就是最外层的表)。这个类型通常可以在DERIVED 和 UNION 类型混合使用时见到。

2.3 derived   子查询(在FROM列表中包含的子查询)

当一个表不是一个物理表时,那么这个就被叫做DERIVED

EXPLAIN SELECT *FROM (SELECT* FROM person LIMIT 5) AS s

3a2d4b799f7d53f761b0e34795bc3d45.png

2.4 subquery   映射为子查询(在SELECT或WHERE列表中包含了子查询)

这个select-type 的值是为使用子查询而定义的.

EXPLAIN SELECT person.*,(select 2 from person as p2) FROM person where dept_id = (select did from dept where dname='python');

414753fbb7ae4228a067cb873c0f6e56.png

2.5  union 联合

EXPLAIN SELECT * FROM personunion allselect * from person ;

2d9e0016e8cd65be24410eba2e74d439.png

2.6  union result  使用联合的结果

EXPLAIN SELECT * FROM personunion select * from person ;

4b6196fd073d877f31df29a0884bbc05.png

四. table 输出的行所用的表

EXPLAIN SELECT * FROM person;

212c0fbd37858181c30576a66600120e.png

注意: table 列是EXPLAIN 命令输出结果中的一个单独行的唯一标识符。这个值可能是表名、表的别名或者一个为查询产生临时表的标识符,如派生表、子查询或集合。

五. type连接类型

type 列代表表示 查询计划的连接类型, 有多个参数,先从最佳类型到最差类型介绍 重要且困难

性能: null > system/const > eq_ref > ref > ref_or_null  >index_merge >  range > index >  all

4.1 type=NULL 在优化过程中就已得到结果,不用再访问表或索引。

EXPLAIN SELECT max(id) FROM person;

74225c0fa586c417e7b9251ea4148f19.png

4.2 type=const/system 常量

在整个查询过程中这个表最多只会有一条匹配的行,比如主键 id=1 就肯定只有一行;

表最多有一个匹配行,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以一定是用到primary key 或者unique 情况下才会是const,看下面这条语句

EXPLAIN SELECT * FROM person where id =2;

2d0c017ce9a79b79eb5b7948e5510162.png

所以说可以理解为const是最优化的。

4.3 type=eq_ref  使用有唯一性 索引查找(主键或唯一性索引)

对于eq_ref的解释,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql explain ref const_MySQL EXPLAIN 详解 的相关文章

  • [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解

    Web渗透技术的核心是发现Web漏洞 发现漏洞有手工和软件自动化扫描两种方式 对于用户验证漏洞 用户凭证管理问题 权限特权及访问控制漏洞 缓存漏洞 跨站脚本漏洞 加密漏洞 路径切换漏洞 代码注入漏洞 配置漏洞 数据和信息泄露 输入验证码漏洞
  • CA证书服务搭建

    准备一 域服务搭建 步骤一 搭建CA证书服务器 设置固定IP地址 192 168 0 与主机名 DC 打开服务器管理器 gt 点击添加角色和功能 步骤二 一路回车到达选择服务器角色位置 选中Active Directory域服务与Activ
  • 动态库装载及 dlsym的RTLD_NEXT参数详解

    在看公司spp框架代码的时候发现了如下一段宏定义 其中的dlsym函数及其RTLD NEXT参数的含义不是很明白 于是网上搜了下这里做个记录 define mt hook syscall name do if g mt syscall ta
  • 扔掉工具类!MyBatis 一个简单配置搞定加密、解密,好用!

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 3 5 分钟 来自 https juejin cn post 6963811586184052767 目录 一 背景 二 解决方案 三 需求 四 实现思路 五 实现代
  • spring cloud alibaba 学习(二十五)nacos 服务地址动态更新

    目录 前言 服务地址动态更新 前言 通过配置endpoint来实现服务地址的动态更新 服务地址动态更新 1 在 NacosConfigBootstrapConfiguration 创建 NacosConfigManager 的过程中 会创建
  • Unity PlayerPrefs、JsonUtility

    Unity中有两个常用的数据存储方式 PlayerPrefs和JsonUtility PlayerPrefs PlayerPrefs是Unity内置的一种轻量级数据存储方式 可用于存储少量的游戏数据 如分数 解锁状态等 使用PlayerPr
  • LPDDR4协议规范之 (六)刷新

    LPDDR4协议规范之 六 刷新 刷新命令 刷新计数器 刷新时序 刷新前时序 刷新后时序 全存储体刷新时序 tRFCab tRFCpb 自刷新 自刷新期间进入掉电模式 自刷新中止 刷新命令 REFRESH命令在时钟的第一个上升沿以CS HI
  • GDI+ 中 Pen 使用总结

    背景 图形类 Graphics 是 GDI 的核心 它提供绘制图形 图像和文本的各种方法 Graphics 中使用 DrawString 方法在指定位置绘制文本或者在一个指定矩形内绘制文本 所有的 Graphics 类的绘制方法都得配合 P
  • MXNet简介

    MXNet是一个十分优秀的深度学习框架 目前包含了许多语言接口 如Python C Scala R等 目前 MXNet版本已经更新到1 3 0 本系列文章主要使用Python接口 在MXNet官网 1 上 官方建议新手使用Python接口
  • 网站代理是什么?有什么需要注意的?

    如今 网站代理已经成为一种不可或缺的经营方式 无论是企业还是个人 都需要通过代理来获得更多的流量和市场份额 一 网站代理的优势 网站代理的优势在于能够为您提供更加专业 周到的服务 这些优势包括 1 丰富的内容资源 能够满足客户对不同领域信息
  • Java-按照指定小时分割时间段

    按照指定小时分割时间段 param dateType 类型 M D H N gt 每月 每天 每小时 每分钟 param dBegin开始时间 param dEnd结束时间 param time 指定小时 如 1 2 3 4 return
  • 变分推断学习

    https zhuanlan zhihu com p 401456634 变分推断 1 变分推断的背景 在机器学习中 有很多求后验概率的问题 求后验概率的过程被称为推断 Inference 推断分为精确推断和近似推断 精确推断一般主要是根据
  • H5播放之Rtsp转Websocket点播录像抓拍

    H5播放之Rtsp转Websocket点播录像抓拍 HLS的延时 websocket播放 实现思路 广大网友们 很久没上CSDN了 暨上次RTSP转HLS文章发布以来 一直还有一个问题没有解决 如何避免HLS切片带来的不可避免的高延时 HL
  • 浅谈PCA 人脸识别

    前几天讨论班我讲了基于PCA的人脸识别 当时我自己其实也只是知道这个算法流程 然后基于该算法利用c 实现了 效果还不错 后来跟师兄一起讨论的时候 才发现这个PCA还是有相当深刻的意义 PCA的算法 矩阵C AAT A的每一列是一张人脸注 将
  • Java的基础语法

    1 关键字介绍 1 Java 中一些赋以特定的含义 用做专门用途的字符串称为关键字 keyword 2 所有Java关键字都是小写英文字符串 2 Java变量 1 Java变量是程序中最基本的存储单元 其要素包括变量名 变量类型和作用域 2
  • c语言用指针找最大数,C语言,用指针。求输入20个数,依次输出这几个数,求最大值,最小值。...

    满意答案 yuab0p0dpi3 2013 11 22 采纳率 53 等级 13 已帮助 13064人 include include define LENGTH 20 void main int pBuff int malloc size
  • FTTR(Fiber To The Room)组网详解

    FTTR Fiber To The Room 是一种新型的光纤宽带接入技术 主要用于宽带网络覆盖范围有限 带宽瓶颈较严重的酒店 公寓 医院等场所 FTTR技术可以将光纤信号传输到用户房间内 实现高速 稳定的网络接入 提高用户体验 下面我们详
  • Python的最大递归深度

    import sys old sys getrecursionlimit print old 1000 可能是个估计值 我不清楚我没查 报错范围总是比限制要小2 我的电脑上 我不知道为什么 感兴趣可以查一查 sys setrecursion
  • Anaconda的使用

    1 anaconda介绍 Python虽然是一门优秀的程序语言 但其拥有出色的数据处理能力 尤其是在数据量巨大的时候 因而也吸引了不少数据分析人员的关注和使用 Python的数据处理能力主要依赖于NumPy SciPy Matplotlib

随机推荐

  • 在Maven中前端构建实践

    NodeJS为前端技术的发展带来了一次革新 层出不穷的前端库 框架以及打包工具让大家应接不暇 然而这使得前端技术越来越依赖于NodeJS 基于NodeJS编写的前后台项目可以使用同一编译或者打包工具进行管理从而做到无缝的前后端版本控制以及联
  • JSON和xml的区别

    首先 json和xml都是在远程调用或者和某公司合作时的数据交换格式 json和xml的区别 有什么优缺点 ajax 的 和json优缺点 相同点 json与xml是一种远程数据传输交换格式 json是轻量级的 xml标记电子文件具有结构性
  • Fsm serial

    In many older serial communications protocols each data byte is sent along with a start bit and a stop bit to help the r
  • 计算机组成原理-8、总线与输入输出系统

    前言 最近备研学习计算机组成原理的一些笔记 记得比较仓促 仅供个人参考 等明年会仔细结合自己的一些看法加以改进 如有不足之处 还请多多指教 文章目录 总线与输入输出系统 总线与输入输出系统概述 总线 总线类型与结构 总线的信息传输方式 总线
  • 操作系统实验三:用PV操作实现司机售票员进程同步(C语言实现)

    代码如下 driver spy cpp include
  • Docker + Jenkins 详细安装步骤

    一 安装Docker 1 安装依赖环境 yum y install yum utils device mapper persistent datalvm2 2 配置Docker镜像源 yum config manager add repo
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-TerrainCuller赋值给可渲染图层--TerrainRenderData--深度摄像机

    继续调试 可见 在当前环境下 definelist为空 不会再有 OE IS DEPTH CAMERA 因此不是深度摄像机 果然为false 总结下 这里是通过摄像机的状态集的 definelist是否包含 OE IS DEPTH CAME
  • 论文阅读-多任务(2020)-KL4MTL:用于多任务学习的知识蒸馏方法

    KL4MTL 论文 Knowledge Distillation for Multi task Learning 地址 https paperswithcode com paper knowledge distillation for mu
  • 应用MATLAB求解线性代数题目(五)——特征值与特征向量

    目录 特征值和特征向量 相似矩阵 orth 将矩阵正交规范化 特征值和特征向量 我们先看一下特征值和特征向量的定义 可见 特征值可以通过特征方程 行列式 求得 则特征值与特征向量只存在于方阵中 根据MATLAB中的帮助文档 help eig
  • myeclipse 2019.4 使用

    在下主张开源 链接 https pan baidu com s 1953feWjM8p67LGl lLu9fg 提取码 o3d8 如有失效 请联系 QQ 1193754711 积分不富足的共同进步 在下需要积分 https download
  • 计算机网络第2章(物理层)

    计算机网络第2章 物理层 一 物理层的基本概念 二 物理层下面的传输媒体 2 1导引型传输媒体 2 2非导引型传输媒体 三 传输方式 3 1串行传输和并行传输 3 2同步传输和异步传输 3 3单向通信 双向交替通信 双向同时通信 四 编码与
  • Node.JS学习笔记: 基础篇

    基础概念 三大件 浏览器 服务器 数据库 1 浏览器 在这里主要是关注浏览器的作用是发送请求 比如发送一个HTTP请求 喂 把 index html的文档发给我 至于如何发送请求 服务器又如何处理请求 这方面需要HTTP TCP IP的知识
  • 95-30-012-Channel-AbstractNioChannel

    文章目录 1 概述 2 类图 3 NioUnsafe 4 AbstractNioChannel 4 1 Connect事件框架 4 2 FinishConnect事件框架 4 3 Flush事件细节 4 4 构造方法 4 5 doRegis
  • 系统变量

    系统变量 由 操作系统定义的数据存储位置 无论谁登录该计算机 该位置都相同 Administrators 组的用户可以添加新的变量或更改这些值 编辑本段变量设置实例 格式 变量名 实际含义 homedrive 当前启动的系统的所在分区 一般
  • Android路由方案ARouter分析

    一 路由方案 原生的路由方案缺点 显式 直接的类依赖 耦合严重 隐式 规则集中式管理 协作困难 Manifest扩展性较差 跳转过程无法控制 失败无法降级 ARouter的优势 使用注解 实现了映射关系自动注册 与 分布式路由管理 编译期间
  • Python 异常处理指南

    异常处理是编写健壮的 Python 程序时不可或缺的一部分 当程序运行中发生错误时 异常处理机制可以捕获并处理这些错误 从而保证程序的稳定性和可靠性 本文将为您介绍 Python 中的异常处理机制 并提供一些常见的异常处理技巧和示例代码 异
  • git init报错:‘git‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    背景 已经安装git 但是使用命令行git init的时候 报错 git 不是内部或外部命令 也不是可运行的程序 或批处理文件 原因 因为没有成功配置环境变量 所以我们要手动添加一个环境变量 解决方法 1 在桌面找到此电脑 右键 选择 属性
  • 并发控制五(封锁的粒度)

    封锁对象的大小称为封锁粒度 封锁对象可以是逻辑单元 也可以是物理单元 以关系数据库为例 封锁对象可以是这样一些逻辑单元 属性值 属性值的集合 元组 关系 索引项 整个索引直至整个数据库 也可以是这样一些物理单元 页 数据页或索引页 物理记录
  • CentOS7安装部署wordpress

    环境介绍 CentOS7 3安装部署wordpress 本环境主机运行在阿里云 部署方式为单节点部署 主机配置 系统 CentOS7 3 mini CPU 1核 内存 1GB 硬盘 60G 外网带宽 1Mbs 一 配置主机名 root lo
  • mysql explain ref const_MySQL EXPLAIN 详解

    一 介绍 EXPLAIN 命令用于SQL语句的查询执行计划 这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的 这条命令并没有提供任何调整建议 但它能够提供重要的信息帮助你做出调优决策 先解析一条sql语句 你可以看