MySql Explain优化命令使用

MySql Explain优化命令使用

truncate table student // 自增id 从 0 开始

delete from student // 自增id 会保留 , 108

区别: 1:自增id

2:delete 可以恢复

truncate 无法恢复

前言

EXPLAIN 是一个用于获取 SQL 语句执行计划的命令,用于帮助理解查询的执行过程以及如何优化。这里主要是索引优化

1.准备

truncate table student DROP PROCEDURE IF EXISTS InsertRecords;
CREATE PROCEDURE InsertRecords()
BEGINDECLARE i INT DEFAULT 1;WHILE i <= 100000 DOSET @name = CONCAT('张', i);SET @age =  i;INSERT INTO student(name, age) VALUES (@name, @age);SET i = i + 1;END WHILE;
END

SQL

2.2 select_type列

"select_type"列是用来描述查询的类型

下面是常见的"select_type"值及其含义:

  1. SIMPLE: 表示查询中不包含子查询或UNION操作符的简单查询。

  2. PRIMARY: 表示查询中包含子查询,并且该子查询处于顶层位置。

  3. SUBQUERY: 表示查询中的子查询,在FROM子句中被其他查询引用。

  4. DERIVED: 表示查询中的派生表,是从子查询结果中创建的临时表。

  5. UNION: 表示查询中使用了UNION或UNION ALL操作符进行多个查询结果的合并。

  6. UNION RESULT: 表示UNION操作后的结果集。

  7. DEPENDENT SUBQUERY: 表示子查询的结果取决于外部查询的值。

  8. DEPENDENT UNION: 表示UNION操作的结果取决于外部查询的输入。

  9. UNCACHEABLE SUBQUERY: 表示子查询的结果无法被缓存,通常是因为子查询中使用了非确定性函数或用户变量。

  10. DEPENDENT UNION RESULT: 表示外部查询对于UNION操作结果的依赖。

2.3 table列

,"table"列用于表示查询所涉及的表或派生表的名称。

下面是"table"列可能出现的不同值及其含义:

  1. 实际表名:表示查询中直接引用的物理表的名称。

  2. 表的别名:如果查询中使用了表的别名,那么"table"列将显示该别名。

  3. 派生表:对于包含子查询的查询,"table"列可能显示一个派生表的名称,表示在查询执行过程中创建的临时表。

2.4 type 列(重点)

"type"列用于表示访问表时所采用的访问类型。

下面是常见的"type"值及其含义:

  1. system: 表示只有一行的表,通常是系统表。

  2. const: 表示通过索引只能匹配到一行数据。 explain select * from student where id = 1688

  3. eq_ref: 表示使用了等值连接(例如,使用主键或唯一索引连接表)。explain SELECT * FROM student s1 JOIN student s2 ON s1.id = s2.id WHERE s1.age = 25;

  4. ref: 表示使用了非唯一索引进行查找,并返回匹配的多行或一行数据。 explain select * from student where name = '张68'

  5. range: 表示使用了索引进行范围查找,例如使用比较符(>, <, BETWEEN)或IN操作符。 explain select * from student where age < 1688

  6. index: 表示全索引扫描,也就是说用了某一个索引的全部, 通常发生在查询使用索引覆盖的情况下。explain select count(*) from student ;explain select sum(age) from student

  7. all: 表示全表扫描,即没有使用索引,需要遍历整个表进行查询。 explain select * from student

需要注意的是,"type"列显示的结果是一个逐渐优化的输出,从最好到最差的顺序。尽可能选择更快和更有效的访问方法。

2.5 key列

在MySQL的EXPLAIN查询结果中,"key"列用于表示用于访问表的索引的名称。它显示了优化器选择的用于访问表的索引的名称,或者标识没有使用索引。

下面是"key"列可能出现的不同值及其含义:

  1. 索引名称:表示使用了具名索引,优化器选择了该索引进行查询。

  2. NULL:表示查询没有使用任何索引,即进行了全表扫描

2.6 key_len列

"key_len"列用于表示索引字段的最大长度。它显示了优化器使用的索引字段的最大长度,以字节为单位。

下面是"key_len"列的一些常见值及其含义:

  1. 固定长度:如果索引字段是固定长度的(如整数、日期等),那么"key_len"列将显示该固定长度。

  2. 可变长度:如果索引字段是可变长度的(如字符串),那么"key_len"列将显示该字段的最大长度。

"key_len"列的值是根据索引字段和索引类型来计算的。它可以帮助我们了解索引的大小和使用情况。

2.7 ref列

在MySQL的EXPLAIN查询结果中,"ref"列用于表示连接条件所引用的列或常量。它显示了查询中使用的引用,用于连接表或进行进一步的过滤。

下面是"ref"列可能出现的不同值及其含义:

  1. 列名:表示引用了查询中的某个表的列,通常用于等值连接。

  2. 常量:表示引用了查询中的一个常量值,用于与表中的列进行匹配。

  3. 空白:表示没有引用列或常量,通常出现在全表扫描的情况下。

需要注意的是,如果查询中存在多个表连接,"ref"列可能会显示多个列名或常量,以逗号分隔。

2.8 rows列

在MySQL的EXPLAIN查询结果中,"rows"列用于表示优化器估计的扫描或访问的行数。它显示了查询执行过程中预计要处理的行数。

下面是"rows"列的一些常见值及其含义:

  1. 具体的行数:表示优化器估计的该操作将处理的实际行数。

  2. 0:表示优化器估计的该操作将不需要扫描或访问任何行。

  3. NULL:表示优化器无法提供有关操作计划的行数估计。

"rows"列的值主要基于表的统计信息和查询条件来估计,因此它并不总是准确的。它仅作为一个参考,用于评估查询执行计划的成本和性能。

2.9 filtered列

"filtered"列用于表示查询结果经过表过滤后的预计百分比。它显示了查询条件对表数据的过滤效果。

"filtered"列的值范围从0到1之间,其中1表示所有行都满足查询条件,0表示没有行满足查询条件。

下面是"filtered"列的一些常见值及其含义:

  1. 具体的百分比:表示优化器估计的满足查询条件的行占总行数的百分比。

  2. NULL:表示优化器无法提供有关过滤效果的估计信息。

"filtered"列的值可以帮助我们了解查询条件对表数据的过滤程度。较高的过滤值意味着查询条件对表的过滤效果较好,可以减少进一步处理的数据量。

在上述示例中,"filtered"列的值为100/1000,即0.1。这表示优化器估计查询结果将过滤掉90%的行,仅返回10%的行,这是基于索引"student_age_IDX"和查询条件"age < 1688"的预计过滤效果。

需要注意的是,"filtered"列提供的是优化器的估计信息,并不一定与实际运行时的过滤效果完全一致。实际的过滤效果还受到数据分布和统计信息准确性等因素的影响。

2.10 Extra列

"Extra"列提供了关于执行计划中其他附加信息的说明。该列包含了一些额外的操作、提示和优化器的相关信息。

下面是"Extra"列可能出现的一些常见值及其含义:

  1. “Using index”:表示查询通过使用覆盖索引(索引包含了所有查询所需的列)来避免访问表的实际行数据。

  2. “Using where”:表示查询需要在返回结果之前进行附加的过滤操作,可能需要在查询过程中进行表的扫描或访问。

  3. “Using temporary”:表示查询需要创建一个临时表来处理一些操作(如排序、分组),这可能会增加额外的内存和磁盘开销。

  4. “Using filesort”:表示查询需要在内存或磁盘上进行排序操作,这可能会影响性能。

  5. “Using join buffer”:表示查询使用了连接缓冲区来处理连接操作,这可以改善连接性能。

  6. “Distinct”:表示查询使用了DISTINCT关键字去除重复的行。

  7. “Range checked for each record”:表示查询通过索引范围扫描进行过滤,但还需要进一步检查每一行是否满足其他条件。

  8. “Full scan on NULL key”:表示查询使用了一个NULL键的索引进行全表扫描。

需要注意的是,"Extra"列的值可能会因查询的具体情况而有所不同,且某些值可能会同时出现。这些值提供了关于查询执行计划的额外信息,有助于我们理解查询的操作、性能和优化情况。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nacos client 本地缓存问题

问题&#xff1a; nacos 更新了配置文件&#xff0c;更新了以后重新启动还是旧的配置信息。 NACOS版本&#xff1a; 1.1.4 解决&#xff1a; 配置缓存 Nacos Client 会将从 Nacos 服务器获取的配置信息缓存在本地。这样&#xff0c;即使 Nacos 服务器不可用&#xff0c;客…

Spring IoC笔记

目录 1.什么是 IoC&#xff1f; 2.IoC类注解&#xff08;五大注解&#xff09; 2.1那为什么要这么多类注解&#xff1f; 2.2五大注解是不是可以混用&#xff1f; 2.3程序被spring管理的条件是&#xff1f; 3.bean对象 3.1Bean 命名约定 3.2获取bean对象 4.⽅法注解 B…

汽车总线之----J1939总线

instruction SAE J1939 是由美国汽车工程协会制定的一种总线通信协议标准&#xff0c;广泛应用于商用车&#xff0c;船舶&#xff0c;农林机械领域中&#xff0c;J1939协议是基于CAN的高层协议&#xff0c;我们来看一下两者之间的关系。在J1939 中&#xff0c;物理层和数据链路…

如何在iPad上用Chrome实现无痕浏览

在数字化时代&#xff0c;隐私保护已成为我们日常生活中不可忽视的一部分。特别是在使用移动设备浏览网页时&#xff0c;如何确保个人信息的安全显得尤为重要。本文将详细介绍如何在iPad上使用Chrome浏览器实现无痕浏览&#xff0c;以保护您的在线隐私。 &#xff08;本文由ht…

electron教程(三)窗口设置

在main.js文件中&#xff0c;创建窗口时会设置窗口的大小&#xff0c;其实还有很多其他属性&#xff0c;可以根据实际需求选择设置&#xff0c;但部分属性存在局限性&#xff0c;官网也有明确告知&#xff1a;自定义窗口 | Electron (electronjs.org) 项目文件目录如下&#x…

VisualGLM-6B——原理与部署

VisualGLM-6B技术原理介绍 VisualGLM-6B 是一种多模态预训练模型&#xff0c;它旨在将视觉和语言模型进行结合&#xff0c;使得语言模型能够理解图像信息并与文本对话无缝结合。为了更好地理解 VisualGLM-6B 的内容&#xff0c;我们可以从以下几个方面来解析它的原理、结构、训…

内存占用估算方法

优质博文&#xff1a;IT-BLOG-CN 通过掌握每种数据类型的大小&#xff0c;就可以更准确地预测对象和数据的内存消耗。 一、基础数据类型 Java基础数据类型结构&#xff0c;在64位系统开启指针压缩情况下的内存占用字节数&#xff1a; booleanbytecharshortintlongfloatdoub…

linux下sudo执行的程序会有一个额外的进程的问题

当我们执行一个可执行文件时&#xff0c;有可能需要一些更高的权限&#xff0c;为此我们会用sudo ./test的方法执行&#xff0c;这时候我们通过ps aux | grep ./test去查看进程&#xff0c;会发现多出来一个 sudo ./test 的进程&#xff0c;该进程被杀死后&#xff0c;发现目标…

等保测评:企业数字安全的坚实盾牌

1.1 企业数字化转型的浪潮 在当今时代&#xff0c;企业数字化转型的浪潮正以前所未有的速度席卷全球&#xff0c;据IDC预测&#xff0c;到2023年&#xff0c;全球数字化转型支出将达到惊人的2.3万亿美元。这一趋势不仅重塑了企业的运营模式&#xff0c;更对企业的信息安全提出…

Mac通过ssh连接工具远程登录服务器( Royal TSX安装及使用)

一、Royal TSX软件下载地址 Royal Apps 二、Royal TSX 汉化 汉化包地址&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 三、基础配置 Royal TSX 是一款基于插件的应用&#xff0c;刚安装时还不具备使用条件&#xff0c;需要进行一些基础配置 1 安装基础插件…

【鸿蒙开发】05 登录Demo解析

文章目录 一、功能介绍 在鸿蒙开发中&#xff0c;一个完善的登录功能是许多应用程序的基础需求。本文将详细介绍一个鸿蒙 App 登录 Demo&#xff0c;包括其功能介绍、代码解析以及代码 demo 的下载地址。 本文初始代码从华为开发者网站下载&#xff0c;根据该Demo进行内容调整。…

无人机之数据提取篇

一、无人机平台与传感器 无人机是进行数据采集的基础设施&#xff0c;其稳定性、可靠性、灵活性和负载能力直接影响到数据采集的效果。根据实际需求&#xff0c;需选择适合的无人机类型&#xff0c;如固定翼无人机适合大范围、长时间的数据采集&#xff0c;而多旋翼无人机则更适…

windows系统下Telnet工具的安装步骤

通过控制面板启用Telnet客户端 点击“确定”按钮&#xff0c;按照系统提示完成安装。 打开cmd&#xff0c;输入telnet就可以了

影刀RPA实战:Excel拆分与合并工作表

1.影刀操作excel的优势 Excel&#xff0c;大家都不陌生&#xff0c;它是微软公司推出的一款电子表格软件&#xff0c;它是 Microsoft Office 套件的一部分。Excel 以其强大的数据处理、分析和可视化功能而闻名&#xff0c;广泛应用于商业、教育、科研等领域。可以说&#xff0…

基于Apache和Tomcat的负载均衡实验报告

说明&#xff1a;本实验为浙江科技大学软件工程本科专业课程《软件体系结构》的实验报告。 五、总结 负载均衡的基础是集群&#xff0c;集群就是一组连在一起的计算机&#xff0c;从外部看它是一个系统&#xff0c;各节点可以是不同的操作系统或不同的硬件构成的计算机。负载…

【网络安全】-访问控制-burp(1~6)

文章目录 前言   1.Lab: Unprotected admin functionality  2.Lab: Unprotected admin functionality with unpredictable URL   3.Lab: User role controlled by request parameter   4.Lab:User role can be modified in user profile  5.Lab: User ID controlled by…

建筑中的文化表达与地方特色:演绎地域之魂

在浩瀚的城市风貌中&#xff0c;每一座建筑都是文化的载体&#xff0c;无声地讲述着地域的故事与精神。建筑不仅需要满足功能需求&#xff0c;更应成为文化传承与创新的舞台。本文旨在深度剖析建筑设计如何在尊重与弘扬地方文化的基础上&#xff0c;巧妙融合现代元素&#xff0…

CSS文本格式化

通过 CSS 中的文本属性您可以像操作 Word 文档那样定义网页中文本的字符间距、对齐方式、缩进等等&#xff0c;CSS 中常用的文本属性如下所示&#xff1a; text-align&#xff1a;设置文本的水平对齐方式&#xff1b;text-decoration&#xff1a;设置文本的装饰&#xff1b;te…

PCL 索引空间采样

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 索引空间采样 2.1.2 可视化原始点云和下采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xf…

XSS | XSS 常用语句以及绕过思路

关注这个漏洞的其他相关笔记&#xff1a;XSS 漏洞 - 学习手册-CSDN博客 0x01&#xff1a;干货 - XSS 测试常用标签语句 0x0101&#xff1a;<a> 标签 <!-- 点击链接触发 - JavaScript 伪协议 --><a hrefjavascript:console.log(1)>XSS1</a> <!-- 字…