Explain执行计划中各个字段的含义

news2024/10/7 20:26:42

Explain执行计划中各个字段的含义

    • 1、Explain有什么用
    • 2、Explain有哪些信息
    • 3、Explain执行计划详解

1、Explain有什么用

当Explain 与 SQL语句一起使用时,MySQL 会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。

2、Explain有哪些信息

Explain 执行计划包含字段信息如下:分别是 id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra 12个字段。
在这里插入图片描述

3、Explain执行计划详解

  1. id: :表示查询中执行select子句或者操作表的顺序,id的值越大,代表优先级越高,越先执行。
  2. select_type:表示 select 查询的类型,主要是用于区分各种复杂的查询,例如:普通查询、联合查询、子查询等。
SIMPLE:表示最简单的 select 查询语句,也就是在查询中不包含子查询或者 union交并差集等操作
PRIMARY:当查询语句中包含任何复杂的子部分,最外层查询则被标记为PRIMARY。
SUBQUERY:当 select 或 where 列表中包含了子查询,该子查询被标记为:SUBQUERY 。
DERIVED:表示包含在from子句中的子查询的select,在我们的 from 列表中包含的子查询会被标记为derived 。
UNION:如果union后边又出现的select 语句,则会被标记为union;若 union 包含在 from 子句的子查询中,外层 select 将被标记为 derived。
UNION RESULT:代表从union的临时表中读取数据,而table列的<union1,4>表示用第一个和第四个select的结果进行union操作。
table:查询的表名,并不一定是真实存在的表,有别名显示别名,也可能为临时表,例如上边的DERIVED、 <union1,4>
  1. table 查询的表名,并不一定是真实存在的表,有别名显示别名,也可能为临时表,例如上边的DERIVED、 <union1,4>等

  2. partitions 询时匹配到的分区信息,对于非分区表值为NULL,当查询的是分区表时,partitions显示分区表命中的分区情况。

  3. type:查询使用了何种类型,它在 SQL优化中是一个非常重要的指标,以下性能从好到坏依次是:

system  > const > eq_ref > ref  > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
system: 当表仅有一行记录时(系统表),数据量很少,往往不需要进行磁盘IO,速度非常快。
const:表示查询时命中 primary key 主键或者 unique 唯一索引,或者被连接的部分是一个常量(const)值。这类扫描效率极高,返回数据量少,速度非常快。
eq_ref:查询时命中主键primary key 或者 unique key索引, type 就是 eq_ref。
ref:区别于eq_ref ,ref表示使用非唯一性索引,会找到很多个符合条件的行。
ref_or_null:这种连接类型类似于 ref,区别在于 MySQL会额外搜索包含NULL值的行。
index_merge:使用了索引合并优化方法,查询使用了两个以上的索引
unique_subquery:替换下面的 IN子查询,子查询返回不重复的集合
index_subquery:区别于unique_subquery,用于非唯一索引,可以返回重复值。
range:使用索引选择行,仅检索给定范围内的行。简单点说就是针对一个有索引的字段,给定范围检索数据。在where语句中使用 bettween...and、<><=、in 等条件查询 type 都是 range。
index:Index 与ALL 其实都是读全表,区别在于index是遍历索引树读取,而ALL是从硬盘中读取。
ALL:将遍历全表以找到匹配的行,性能最差。

7.possible_keys:表示在MySQL中通过哪些索引,能让我们在表中找到想要的记录,一旦查询涉及到的某个字段上存在索引,则索引将被列出,但这个索引并不定一会是最终查询数据时所被用到的索引
8.key:区别于possible_keys,key是查询中实际使用到的索引,若没有使用索引,显示为NULL。 注意:当 type 为 index_merge 时,可能会显示多个索引。
9.key_len:表示查询用到的索引长度(字节数),原则上长度越短越好 。
- 单列索引,那么需要将整个索引长度算进去;
- 多列索引,不是所有列都能用到,需要计算查询中实际用到的列。
10.ref:常见的有:const,func,null,字段名。

  • 当使用常量等值查询,显示const,
  • 当关联查询时,会显示相应关联表的关联字段
  • 如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func
  • 其他情况null
    11 rows:以表的统计信息和索引使用情况,估算要找到我们所需的记录,需要读取的行数。
    12 filtered 这个是一个百分比的值,表里符合条件的记录数的百分比。简单点说,这个字段表示存储引擎返回的数据在经过过滤后,剩下满足条件的记录数量的比例。
    13 Extra :不适合在其他列中显示的信息,Explain 中的很多额外的信息会在 Extra 字段显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 架构解析:多角度解析 Docker 引擎与容器运行时

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

matlab重名函数调用踩坑记录

我新安装了matlab的robotics toolbox&#xff0c;然而调用的rotx不是我想要的函数。 我上网查了一下资料&#xff0c;知乎和csdn有相关的回答&#xff0c;但是我试了一下还是不行。它们的方法是移除路径再添加路径避免函数的冲突。相关方法放在文末的相关参考1 2。这里建议先用…

疯踏java知识点-进阶精讲篇

该资源是关于Java的师生管理系统&#xff0c;可以学习借鉴一下。 继续进行讲解&#xff0c;如果前面有不懂的&#xff0c;可以翻阅一下同专栏的其他文章&#xff0c;该专栏是针对Java的知识从0开始。 JavaBean 一个Java中的类&#xff0c;其对象可用于程序中封装数据举例&…

【C++】STL——vector的使用、 vector增删查改函数的介绍和使用、push_back和pop_back、operator[]

文章目录 1.vector的使用2.vector的增删查改&#xff08;1&#xff09;push_back 尾插&#xff08;2&#xff09;pop_back 尾删&#xff08;3&#xff09;find 查找&#xff08;4&#xff09;insert 在position之前插入val &#xff08;5&#xff09;erase 删除指定位置的数据&…

EXCEl——单元格移除换行

方法一&#xff1a;使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始"选项卡中找到"清除”功能&#xff0c;点击下拉菜单中的“清除格式" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一&#xff1a;使用函数功能 步骤…

Camtasia Studio 2023保存为mp4格式的视频的详细教程,Camtasia的视频导出功能

很多用户刚接触Camtasia Studio&#xff0c;不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 1、 打开Camtasia Studio。 Camtasia Studio- 2023 win&#xff1a; https://souurl.cn/1JFEsn Camtasia …

HACKATHONCTF_1靶场详解

HACKATHONCTF_1靶场复盘 这个靶场有点CTF感觉&#xff0c;一步一步的没有什么难度。 下载地址&#xff1a;https://download.vulnhub.com/hackathonctf/ctf.zip 扫到ip后对ip进行一个单独扫描&#xff0c;发现开了四个端口&#xff0c;ssh设置到7223上了&#xff0c;这个很重…

SPP、SPPF 、 SimSPPF 、 ASPP、 SPPCSPC详解

分享自&#xff1a;https://blog.csdn.net/weixin_43694096/article/details/126354660 1. 原理 1.1 SPP&#xff08;Spatial Pyramid Pooling&#xff09; SPP 模块是何凯大神在2015年的论文《Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognitio…

前端工程化第一章:webpack基础(上)

文章目录 1. 什么是webpack&#xff1f;2. webpack使用2.2. 前置知识2.1. 创建一个项目 3. webpack打包3.1. 创建一个webpack.config.js文件3.2. 入口&#xff08;entry&#xff09;3.2.1. webpack.config.js3.2.2. src/index.js3.2.3. package.json 3.3. 输出&#xff08;outp…

C++第三讲

思维导图 手动封装一个顺序栈类&#xff08;数据元素为整形&#xff09;&#xff0c;要求私有成员属性&#xff1a;堆区空间的指针&#xff0c;用于存放数据&#xff0c;和一个指向栈顶元素的变量 /* ---------------------------------author&#xff1a;YoungZorncreated on…

nacos集群地址配置问题

#it is ip #example 127.0.0.1:8848 127.0.0.1:8849 127.0.0.1:8850 上面的配置可能存在配置失败的情况,可以采用下面的配置 127.0.0.1:8845 127.0.0.1.8846 127.0.0.1.8847 该配置在cluster.conf文件里面

还在使用冒泡排序遍历数组?No No No 库函数qsort帮你搞定所有排序还不快学起来!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; 库函数qsort的介绍&#x1f4ac; 库函数qsort的参数介绍&#x1f4ad; 参数一 (void* base)…

Acwing.908 最大不相交区间数量(贪心)

题目 给定N个闭区间[ai,bi]&#xff0c;请你在数轴上选择若干区间&#xff0c;使得选中的区间之间互不相交&#xff08;包括端点)。输出可选取区间的最大数量。 输入格式 第一行包含整数N&#xff0c;表示区间数。 接下来N行&#xff0c;每行包含两个整数ai , bi&#xff0c…

【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)

目录 一、GitLab Pipeline 流水线语法有哪些&#xff1f;流水线参数列表 如何检查语法错误&#xff1f;流水线语法检测 二、Pipeline 基础语法 job script before_script after_script stages 未定义 stages ​定义 stages 控制 stage 运行顺序 .pre & .post …

2010年中国生态系统服务空间数据集

摘要 生态系统服务是生态系统形成并维持的人类赖以生存和发展的环境条件与效用&#xff0c;是测度自然生态系统保护价值的重要指标。采用科学方法模拟生态系统服务的空间分布对掌握当前我国生态本底状况&#xff0c;识别生态保护重要区&#xff0c;从而有效支持生态管理决策具…

关于金融英语的翻译技巧,你了解多少呢

据了解&#xff0c;金融英语除了具备通用英语特点之外 &#xff0c;还具备自己独特的特征&#xff0c;如专有名词多、专业术语量大、专业缩略词等。为了确保译文的准确性&#xff0c;翻译金融英语时要注意以下几点技巧。 一、专业术语坚持直译。金融翻译中涉及大量金融英语特有…

day10_practice

用面向对象思想实现数据分析 1、设计类&#xff0c;完成数据封装 2、设计抽象类&#xff0c;定义文件读取相关功能&#xff0c;使用子类实现具体功能(由于两份文件格式不同) 3、读取文件&#xff0c;产生数据对象 4、计算每天销售额 5、绘图 一、数据封装类设计 ""…

Python读取骑行fit文件

目录 故事背景安装输出有心率和无心率的数据为NO.fit文件增加心率数据并保存参考文献 故事背景 有一天&#xff0c;我使用wahoo码表骑行记录了一段没有心率带的数据&#xff0c;导出fit文件至电脑。上传至捷安特APP&#xff0c;结果说数据不完整&#xff0c;此时想用代码把心率…

以结果为导向的网络安全需要全面的方法

Positive Technologies 信息安全分析师 Fedor Chunizhekov 谈论了该地区不断变化的网络安全形势&#xff0c;并重点介绍了其 "中东网络安全威胁形势 "报告中影响中东地区的要点。他还强调&#xff0c;为了解决核心安全问题&#xff0c;我们需要采用一种全面的方法来实…

安全性测试的测试点

安全性测试的测试点 1.跨网站脚本攻击 通过脚本语言的缺陷模拟合法用户&#xff0c;控制其账户&#xff0c;盗窃敏感数据 2.注入攻击 通过构造查询对数据库、LDAP和其他系统进行非法查询 3.恶意文件执行 在服务器上执行Shell 命令Execute&#xff0c;获取控制权 4.伪造跨…