学习 EXPLAIN

学习 EXPLAIN

 

Explain语法

EXPLAIN  SELECT ……
变体:
1. EXPLAIN EXTENDED SELECT ……
将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 
2. EXPLAIN PARTITIONS SELECT ……
用于分区表的EXPLAIN

执行计划包含的信息

 

id

包含一组数字,表示查询中执行select子句或操作表的顺序

 

id相同,执行顺序由上至下

 

如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

 

id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行

 

select_type 

表示查询中每个select子句的类型(简单 OR复杂)
 

a.SIMPLE:查询中不包含子查询或者UNION
b.查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY
c.在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY
d.在FROM列表中包含的子查询被标记为:DERIVED(衍生)
e.若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在  FROM子句的子查询中,外层SELECT将被标记为:DERIVED
f.从UNION表获取结果的SELECT被标记为:UNION RESULT
 

type

 
表示MySQL在表中找到所需行的方式,又称“访问类型”,常见类型如下:
 

由左至右,由最差到最好
 
a.ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
 

b.index:Full Index Scan,index与ALL区别为index类型只遍历索引树
 

c.range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于between、<、>等的查询

 

range访问类型的不同形式的索引访问性能差异

 

d.ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找
 

 

 

 
e.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描

 
f.const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量

system是const类型的特例,当查询的表只有一行的情况下, 使用system
 
 
g.NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引
 

 

possible_keys

 
指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
 

key

显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
TIPS:查询中若使用了覆盖索引,则该索引仅出现在key列表中

 

key_len

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

 

key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的
 

ref

表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
 

本例中,由key_len可知t1表的idx_col1_col2被充分使用,col1匹配t2表的col1,col2匹配了一个常量,即 ’ac’
 
 
rows
表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数
 

 

Extra

包含不适合在其他列中显示但十分重要的额外信息
 
a.Using index
 
该值表示相应的select操作中使用了覆盖索引(Covering Index)
 

 

TIPS:覆盖索引(Covering Index)
 
MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件
 
包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index)
 
注意:
如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降
 
b.Using where
 
表示MySQL服务器在存储引擎受到记录后进行“后过滤”(Post-filter),
如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集
 

 

c.Using temporary
 
表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
 

 

d.Using filesort
 
MySQL中无法利用索引完成的排序操作称为“文件排序”
 

 

 

 

 

MySQL执行计划的局限

 
•EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况
•EXPLAIN不考虑各种Cache
•EXPLAIN不能显示MySQL在执行查询时所作的优化工作
•部分统计信息是估算的,并非精确值
•EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划
Fortran基础编程(3)——格式化输出 本篇推文将进一步讲解Fortran基础语法中格式化输出与声明部分,让我们的代码更加美观起来吧~ 阅读详情

相关推荐

Python实战:ERA5风场数据区域提取与风向合成可视化全流程解析

本文详细解析了使用Python处理ERA5风场数据的完整流程,包括NC文件读取、特定区域数据提取、u/v分量合成风向风速的计算,以及利用Matplotlib进行风场时空演变可视化。内容涵盖从环境搭建、数据获取到高级绘图与性能优化的实战经验,为气象数据分析、风能评估及气候研究提供了一套清晰、可操作的技术指南。

swift5iosmith的博客 305

一文带你了解SQL的执行计划(explain)

为什么关注sql的执行计划,因为一个sql的执行计划可以告诉我们很多关于如何优化sql的信息。通过一个sql计划,如何访问中的数据 (是使用全表扫描还是索引查找?)一个表中可能存在多个表中不同的索引,表中的类型是什么是否子查询、关联查询等…sql学习来自于sqlercn讲师了解SQL如何访问表中的数据了解SQL如何使用表中的索引了解SQL所使用的查询类型。...

黎明强的博客 2万+

VSAN 虚拟机丢失排查与恢复完整方案

VSAN虚拟机(含vCenter)显示无效 检查存储状态:登录ESXi Host Client,确认VSAN存储是否挂载。 若未挂载,通过SSH执行 手动挂载。 验证文件存在:检查虚拟机文件是否完整。 解除文件锁定:删除残留的 .lck 文件 手动注册虚拟机:强制注册虚拟机配置文件。 检查VSAN健康:验证集群节点在线、磁盘组状态正常,并测试节点间网络。 修复元数据:针对损坏对象,谨慎执行修复。 终极恢复:若数据丢失,从备份还原或联系VMware支持,提交日志

sido777的博客 2687

MySQL执行计划解读

Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息   id 包含...

weixin_33941350的博客 931

深入浅出DNS系列(一)- DNS杂谈

黄丝玛:班达山,你好,我记性不好,你告诉我搜狐、新浪的网站IP地址好吗? 班达山:你问问DNS先生吧,他专门干这买卖的

jiangsd198的博客 4130

elmos 524系列芯片笔记

芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下: 芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。 基于这个内部的工作原

qq_38230916的博客 2492

MySQL,Oracle,DB2,PostgreSQL上explain的用法

转载请注明原地址,谢谢 (一)MySQL explain用法   explain table_name 或 explain [extended] select select_options 前者可以得出一个表的字段结构等,后者提供MySQL如何执行SQL语句的一些信息。 Explain可以用在select,delete,insert,replace和update之前。

qq_22727355的博客 4582

BLHeli_S电调刷Bluejay固件实战:解锁双向DShot与RPM滤波全攻略

本文详细介绍了如何为BLHeli_S电调刷写开源Bluejay固件,以解锁双向DShot协议与RPM滤波等关键功能。内容涵盖硬件兼容性检查、固件刷写全流程、双向DShot启用与OSD报错解决方案,并对48kHz与96kHz PWM频率的选择提供了实战建议,帮助穿越机玩家在不更换硬件的前提下显著提升飞行性能与操控体验。

weixin_29188997的博客 514

SQL语句的执行计划

结合具体案例,来讲解SQL执行计划

weixin_35794878的博客 4808

一分钟详解PCL中点云配准技术

原文首发于微信公众号「3D视觉工坊」: 一分钟详解PCL中点云配准技术 本文是对前两篇文章:点云配准(一 两两配准)以及3D点云(二 多福点云配准)的补充,希望可以在一定程度上帮助大家对点云配准理解地更为深刻。 一 PCL中点云配准技术的简单实现 在同一文件夹下,有测试数据文件monkey.ply,该文件是利用Blender创建的默认Monkey模型。 利用如下代码,将初始点云(图中绿色点云)...

3D视觉工坊 3706

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5723

SQL优化——执行计划

获取执行计划的常用方法、定制执行计划、通过查看执行计划建立索引、通过光标移动阅读执行计划

码说芯语的博客 6245

13、控制依赖与切片的新基础及递归While程序的摘要

本文探讨了控制依赖和程序切片的新研究进展,并提出了一种用于递归While程序的广义过程摘要概念和验证框架。文章介绍了控制依赖的新定义及其优势,程序切片的相关工作,以及递归While程序的过程摘要在完全正确性和终止性证明中的应用。通过阶乘和插入排序程序的示例分析,展示了过程摘要的有效性。未来的研究将聚焦于并发程序的依赖计算、依赖关系的语义连接以及时间属性的保留。

kotlin6android的博客 88

mysql高级学习explain学习

mysql再次学习

DXH9701的博客 199

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

学习Explain

使用EXPLAIN关键字可以模拟优化器执行SQL的查询语句,从而知道MYSQL是如何处理你的SQL语句的。通常我们使用此功能分析是否需要进行sql优化或者索引优化。 怎么使用EXPLAIN? 使用EXPLAIN的方法很简单,在查询语句前面,添加EXPLAIN就可以了。例如: explain SELECT * from t1; id:表示查询中执行select子句或操作表的顺序 三种情况: Id相同,从上到下执行 Id不同,如果是子查询,id序号会依次递增,id大的先执行 Id有相同有不相同,相同的

weixin_42665587的博客 259

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SQL学习:Explain详解

• EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况• EXPLAIN不考虑各种Cache• EXPLAIN不能显示MySQL在执行查询时所作的优化工作• 部分统计信息是估算的,并非精确值• EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。通过收集统计信息不可能存在结果。

2501_92499985的博客 1267

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

mysql的explain学习笔记

这里涉及到主键索引其叶子节点缓存的是整行数据,而用email做的二级索引,其隐式包含了userid,且二级索引包含了所有需要查询的字段,所以采用二级索引查询的数据更少,效率更高。索引B+树的非叶子节点是否存入缓冲区是由缓冲区大小决定的,如果大小足够,会直接将非叶子节点常驻内存,如果不够,会通过LRU变体算法来决策,所以合理配置缓冲池和优化查询模式,可以最大限度减少磁盘 IO,提升性能。其type 为ALL,这是全索引扫描,从b+树叶子节点从链表中扫描,其效率最低。

jjrenwu003的博客 719

mysql 学习explain

EXPLAIN语句提供有关MySQL如何执行语句的信息(有 SELECT,DELETE,INSERT, REPLACE和 UPDATE语句);当EXPLAIN与可解释的语句一起使用时,MySQL解释了它将如何处 理该语句,包括有关如何连接 表以及以何种顺序连接表的信息。

weixin_45161636的博客 177

MySQL EXPLAIN 命令详解学习

MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行 SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。 1 语法 MySQL 的EXPLAIN 语法可以运行在SELECT 语句或者特定表上。如果作用在表上,那么此命令等同于DE

邱建松的专栏 2万+

MySQL之Explain深入学习

<br />前记:很多东西看似简单,那是因为你并未真正了解它。<br /><br />Explain命令用于查看执行效果。虽然这个命令只能搭配select类型语句使用,如果你想查看update,delete类型语句中的索引效果,也不是太难的事情,只要保持条件不变,把类型转换成select就行了。<br /><br />explain的语法如下:<br /><br />explain [extended] select ... from ... where ...<br /><br />如果使用了extend

xiaolang85的专栏 796

sql优化学习笔记之EXPLAIN详解

创建一张表 善用EXPLAIN查看执行计划 这里我们需要关注的数据有: type列,key列,key_len列,rows列,extra列 1、type列 这里的type官方全称是“join type”,意思为连接类型,它更确切的说是一种数据库引擎查找表的一种方式,在《高性能mysql》一书中作者更是觉得称呼它为访问类型更贴切一些。mysql5.7中type的类型达到了14种之多,...

AninZz 402

mysql explain学习

转自: https://www.cnblogs.com/yycc/p/7338894.html explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.id=b....

小僵尸打字员的博客 671

mysql explain output_MySQL EXPLAIN 命令详解学习

原标题:MySQL EXPLAIN 命令详解学习作者:黄杉blog.youkuaiyun.com/mchdba/article/details/9190771MySQL EXPLAIN 命令详解MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策...

weixin_32207033的博客 221

explain学习

test2表是UNION关键字之后的查询,所以被标记为UNION,test1是最主要的表,被标记为PRIMARY。而表示id=1和id=2的表union,其结果被标记为UNION RESULT。最后一条记录就是衍生表,它一般是FROM列表中包含的子查询,这里是sql中的分组子查询。:id号每个号码,表示一趟独立的查询, 一个sql的查询趟数越少越好。UNION 和 UNION RESULT一般会成对出现。id不同时,id值越大,优先级越高,越先执行。id如果相同,按照从上到下顺序执行。

weixin_43608223的博客 1086

Mysql学习一 Explain

EXPLAIN提供了关于MySQL如何执行语句的信息

yanyubang的博客 305

mysql explain 实例_Mysql实例mysql explain用法学习

《Mysql实例mysql explain用法学习》要点:本文介绍了Mysql实例mysql explain用法学习,希望对您有用。如果有疑问,可以联系我们。导读:本节内容:mysql中explain用法如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序.expl...本节内容:mysql中explain用法如果在select语...

weixin_39830233的博客 161
上一篇: Redis RedisConnection 例子
下一篇: Redis SortedSet 例子
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值