关于数据库 Explain 的解释

MySQL EXPLAIN解释计划 MySQL执行计划是MySQL提供的一种查看SQL与数据库交互行为的工具。可以很直观的帮助开发者发现问题并进行SQL优化。最常用的是EXPLAIN命令。使用EXPLAIN关键字可以模拟优化器的行为,返回MySQL如何使用索引进行搜索和表的连接顺序(JOIN),并且可以让我们知道在MySQL解析查询时,每个动作后的信息。MySQL EXPLAIN解释计划是开发者们优化SQL查询的重要工具。通过了解和使用EXPLAIN命令及其关键元素,我们可以更好地理解查询是如何执行的,并在必要时进行优化以提高查询性能。 阅读详情

判断一条语句在执行的时候有没有走索引,我们可以再该语句之前增加  explain关键字,在使用了explain关键字后,可以向你显式的表明,该语句的性能。我们先来了解一下各个标识的意思

+----+-------------+-------+-------+-------------------+---------+---------+-------+------
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+-------------------+---------+---------+-------+------

id:所检索的数据的序列号

select_type:就是select的类型

取值

SIMPLE简单的查询,没有子查询,也没有union
PRIMAR主查询,有子查询的外边的查询
UNIONUNION中的第二个或者后边的select
DEPENDENT UNION 指子查询中的第二个或者后边的select
UNION RESULTUNION 的整个查询
SUBQUERY子查询中的第一个SELECT
DEPENDENT SUBQUERY子查询中的第一个SELECT,取决于外面的查询
DERIVED派生表的SELECT, FROM子句的子查询

table:即所查询的数据库表名。

type:主要衡量该检索的性能:

ALL全表扫描
index全索引扫描
range给定索引范围进行扫描
ref表示连接,即扫描条件是某个常量,或者列
eq_ref类似于ref,区别是所使用的索引是唯一索引不存在相同的值
const,system在查询时mysql的优化,where语句后被优化为一个常量进行查询
NULLMySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成

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

key:显示Mysql实际决定使用的键(索引)

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

不损失精确性的情况下,长度越短越好 

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

rows:表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数

Extra:该列包含MySQL解决查询的详细信息,有以下几种情况:

Using where:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤

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

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

Using join buffer:改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。

Impossible where:这个值强调了where语句会导致没有符合条件的行。

Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行

 

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

SuperPoint+SuperGlue在HLoc中的实战效果对比:5大公开数据集测试报告 本文在HLoc框架下,对传统SIFT与深度学习组合SuperPoint+SuperGlue在五大公开数据集上的视觉定位效果进行了实战对比测试。报告详细分析了两种方案在Aachen Day-Night、RobotCar Seasons等不同光照、季节及场景下的表现,揭示了SuperPoint+SuperGlue在应对剧烈光照变化和长期外观变化时的显著优势,并提供了基于HLoc模块化设计的选型与配置策略。 阅读详情

相关推荐

【Unity3D渲染】Unity3d实现Photoshop的各种图层混合模式

Adobe Photoshop图层混合原理、Unity ShaderLab图层混合实现

a310989583的专栏 2435

详解GaussDB(DWS) explain分布式执行计划

摘要:本文主要介绍如何详细解读GaussDB(DWS)产生的分布式执行计划,从计划中发现性能调优点。 前言 执行计划(又称解释计划)是数据库执行SQL语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想,我们首先应该查看它的执行计划。本文主要介绍如何详细解读GaussDB(DWS)产生的分布式执行计划,从计划中发现性能调优点。 1、执行算子介绍 要读懂执行计划,首先要知道数据库执行算子的概念: 下面重点介绍下基于sharing

华为云官方博客 9065

相机标定原理与张氏标定法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

heeweii的博客 2280

mysql的sql执行计划详解

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。explain执行计划包含的信息其中最重要的字段为:id、type、key、rows、Extra各字段详解idselect查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1、id相同:执行顺序由上至下 2、id不同:如果...

360linker 1万+

Android Audio常见问题分析方法

分析audio dump,确定写给BT的data是否正常,MTK平台Android原生架构分析threadloop write节点,高通平台分析QXDM 1586节点,从dump确定问题大概位置。分析systrace 确定性能。AudioFocus状态(用于播放或者音量异常的情况)。AudioTrack是否正常创建bt连接是否正常通路异常,setMode,setSpeakerphoneOn等都会影响设备选择,sco调用流程是否正常。

一条老狗的博客 2388

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

GaussDB性能诊断核心武器:EXPLAIN ANALYZE 与执行计划

GaussDB 作为一款高性能分布式数据库,其 ​**EXPLAIN ANALYZE**​ 工具能够深入解析查询的执行过程,暴露潜在的性能瓶颈。本文将从执行计划的生成逻辑、关键字段解读、优化策略到实战案例,全面剖析这一核心技术。

Gauss松鼠会 1778

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1552

数据库之explain

1

博客 1027

【微服务】SpringBoot 整合 FastExcel 实现导入导出操作详解

SpringBoot 整合 FastExcel 实现导入导出操作详解

congge 4234

五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

java专栏 969

GaussDB数据库--SQL执行计划详解

如节中所说,EXPLAIN会显示执行计划,但并不会实际执行SQL语句。EXPLAIN ANALYZE和EXPLAIN PERFORMANCE两者都会实际执行SQL语句并返回执行信息。在这一节将详细解释执行计划及执行信息。

Cui_Yuan_666的博客 1647

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 113

详解MySQL数据库中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释: table:显示...

weixin_34381687的博客 268

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

php mysql explain_详解MySQL数据库中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explainselectsurname,first_name form a,bwherea.id=b.idEXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种...

weixin_32734143的博客 141

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mysql加字段语句能用explain_详解MySQL数据库中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explainselectsurname,first_name form a,bwherea.id=b.idEXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种...

weixin_29666725的博客 138

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

理解 EXPLAIN

EXPLAIN是 SQL 中的一个命令,用于获取数据库执行 SQL 查询的具体步骤,也就是查询执行计划。执行计划包括如何访问表中的数据(例如通过索引还是全表扫描)、连接查询的实现方式和连接顺序等。如果 SQL 语句性能不理想,查看其执行计划是首要步骤。

Amsssssssssss的博客 1141

面试题:【数据库二】mysql:explain解释器type关键字

mysql的explain解释器的相关资源网上很多,这里我只记录一下我关心的Type列 type type字段的意思:当前sql扫描表的方法 type字段对应的value值: system > const > eq_ref > ref > range > index > ALL 查询效率从左往右越来越差 system:系统表,少量数据,往往不需要进行磁盘IO const:常量连接 eq_ref:主键索引(primary key)或者非空唯一索引

叫我吕小布 1038

mysql explain 分析中select_type列解释

小泽 284

29、Flink SQL之DESCRIBE、EXPLAIN、USE、SHOW、LOAD、UNLOAD、SET、RESET、JAR、JOB Statements、UPDATE、DELETE(1)

指定 PLAN_ADVICE 将使得优化器(optimizer)分析优化后的物理执行计划并提供潜在的数据风险预警或性能调优建议。所有后续命令都将解析已启用模块中的元数据(函数/用户定义的类型/规则等),并遵循解析顺序。EXPLAIN 语句用于解释 query 或 INSERT 语句的执行逻辑,也用于优化 query 语句的查询计划。以上,简单的介绍了desc、explain和use的语法使用,并以示例的形式进行介绍。本文简单的介绍了desc、explain和use的语法使用,并以示例的形式进行介绍。

alanchanchn的专栏 7万+

Mysql+Explain数据库优化分析

Explain数据库优化分析 Explain各字段解释 分析语句: #至少有2位非掌门人成员的门派 explain select t_dept.* from t_dept, (select deptId id, count(*) count from t_dept d, t_emp e where e.deptId = d.id ...

张文军 254

Explain Results

Explain Results On this page Explain Output Sharded Collection Compatibility Changes Changed in version 3.0. MongoDB provides the db.collection.explain() method, the cursor.explain() method, and ...

老猿说说专栏 382

数据库调优:ORACLE EXPLAIN PLAN的总结

SET AUTOTRACE ON explain;

i'm thinking... 267

mysql explain详解

    sina blog - Explain的type字段解释

weixin_34326558的博客 64

explain for mysql_MySQL - EXPLAIN详解

日常工作中,我们有时会通过日志记录下耗时较长的SQL语句,但是光找出这些SQL语句并不意味着完事了,常常需要借助EXPLAIN来查看SQL语句的执行计划,查看SQL语句是否用上了索引,是否进行了全表扫描,这都可以通过EXPLAIN命令得到。概述EXPLAIN: 为SELECT语句中使用到的每个表返回一条信息。它按照MySQL在处理语句时读取它们的顺序列出这些表。MySQL使用循环嵌套算法解析所有连...

weixin_33462050的博客 545

Explain 输出分析

本博客写得精炼,是博主转载的。比博主写得好 MySQL 之 Explain 输出分析 也可以使用EXPLAIN EXTENDED命令,执行完后再执行SHOW WARNINGS查看到警告信息(进一步分析) 背景 前面的文章写过 MySQL 的事务和锁,这篇文章我们来聊聊 MySQL 的 Explain,估计大家在工作或者面试中多多少少都会接触过这个。可能工作中实际使用的不多,但是不论的自己学...

SBS技术栈-晓白 844
上一篇: 关于URI 和URL 的区别
下一篇: 关于数据库索引
Embra_ce
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值