Explain详述(Sql查询优化器)

Mysql——》查询优化器 Mysql使用 基于开销(cost)的优化器 ,哪个开销最小就用哪个执行计划。 阅读详情

explain用法

explain可以帮助我们分析select语句,找出select语句的瓶颈,从而可以针对性地去做优化,让MySQL查询优化器更好地工作。

MySQL查询优化器有几个目标,其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。

使用explain+select语句,会返回以下的一个表:

 

下面对上述表的每一列进行说明:

1.1 id列

说明:MySQL Query Optimizer 选定的执行计划中查 询的序列号。表示查询中执行 select 子句或 操作表的顺序,id 值越大优先级越高,越先 被执行。id 相同,执行顺序由上至下。

1.2 select_type列

select_type查询类型

说明

SIMPLE

简单的select查询,不使用union及子查询

PRIMARY

最外层的select查询

UNION

UNION中的第二个或随后的select查询,不依赖外部查询的结果集

DEPENDENT UNION

UNION 中的第二个或随后的 select 查询,依赖于外部查询的结果集

UNION RESULT

UNION 查询的结果集

SUBQUERY

子查询中的第一个 select 查询,不依赖于外部查询的结果集

DEPENDENT SUBQUERY

子查询中的第一个 select 查询,依赖于外部 查询的结果集

DERIVED

用于 from 子句里有子查询的情况。MySQL 会 递归执行这些子查询,把结果放在临时表里。

UNCACHEABLE SUBQUERY

结果集不能被缓存的子查询,必须重新为外 层查询的每一行进行评估

UNCACHEABLE UNION

UNION 中的第二个或随后的 select 查询,属 于不可缓存的子查询

 

1.3 TABLE列

说明:输出行所引用的表。

1.4 TYPE

说明:很重要的列之一,显示连接使用的类型,按最优到最差的类型排序。

TYPE

说明

system

表仅有一行(=系统表)。这是 const 连接类型 的一个特例。

const

const 用于用常数值比较 PRIMARY KEY 时。当 查询的表仅有一行时,使用 System。

eq_ref

除 const 类型外最好的可能实现的连接类型。它用在一个索引的所有部分被连接使用并且索引是 UNIQUE 或 PRIMARY KEY,对于每个索引键,表中只有一条记录与之匹配。

ref

连接不能基于关键字选择单个行,可能查找到多个符合条件的行。叫做 ref 是因为索引要跟某个参考值相比较。这个参考值或者是一个常数,或者是来自一个表里的多表查询的

结果值。

ref_or_null

如同 ref,但是 MySQL 必须在初次查找的结果

里找出 null 条目,然后进行二次查找。

index_merge

说明索引合并优化被使用了。

unique_subquery

在某些IN查询中使用此种类型,而不是常规的ref

index_subquery

在某些IN查询中使用此种类型,与unique_subquery类似,但是查询的是非唯一性索引。

range

只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。

index

全表扫描,只是扫描表的时候按照索引次序进行而不是行。主要优点是避免了排序,但是开销仍然非常大。

all

最坏的情况,从头到尾全表扫描。

 

1.5 possible_keys

说明:指出Mysql能在该表中使用哪些索引有助于查询。如果为空,说明没有可用的索引。

1.6 key_len

说明:使用的索引的长度,在不损失精确性的情况下,长度越短越好。

1.7 ref

说明:显示索引的那一列被使用了。

1.8 rows

说明:Mysql认为必须检查的用来返回请求数据的行数。

1.9 extra

Using filesort

表示MySQL会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容。

Using Temporary

表示MySQL在对查询结果排序时使用临时表,常见于排序order by和分组查询group by.

Explain详述(Sql查询优化器) -Mysql深化学习-持续更新 MySql 深化学习 1 explain用法 explain可以帮助我们分析select语句,找出select语句的瓶颈,从而可以针对性地去做优化,让MySQL查询优化器更好地工作。 MySQL查询优化器有几个目标,其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。 使用explain+select语句,会返回以下的一个表:   下面对上述表的每一列进行说 阅读详情

相关推荐

Mysql Explain执行计划详解

有了慢查询语句后,就要对语句进行分析。一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,我们需要搞懂EPLATNEXPLAIN的各个输出项都是干嘛使的,从而可以有针对性的提升我们查询语句的性能。

技术与业务融合思维 1140

SQL优化-优化器

SQL优化-优化器

weixin_50742675的博客 1741

攻防世界 Crypto 新手练习区 1-12 全详解

本篇是攻防世界 Crypto 新手练习区的全解

闵行小鱼塘 3732

MySQL 优化器

MySQL 优化器

wangnakx的专栏 2508

DIY玩家必备:用SSS1623芯片打造高性价比USB麦克风(附完整电路图)

本文详细介绍了如何利用SSS1623芯片DIY高性价比USB麦克风,包括元件选型、电路设计、PCB布局及调试技巧。通过完整的电路参考设计和实用建议,帮助电子爱好者打造专业级录音设备,实现免驱动即插即用功能。

weixin_29166013的博客 234

Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战)

本文详细介绍了如何使用Wireshark在Win11系统中快速定位网络卡顿问题。通过5分钟抓包分析,作者成功发现TCP重传率高达37%的罪魁祸首,并提供了从准备工作到实战分析的保姆级教程,帮助用户解决游戏卡顿、视频会议延迟等常见网络问题。

weixin_28839629的博客 305

sql优化之查询优化器

本文大部分内容引用自代码搬运工.-MYSQL查询优化器 看本篇之前推荐看 innodb数据结构,缓冲区 熟悉数据库存数结构MySQL 使用典型的客户端/服务器(Client/Server)结构, 体系结构大体可以分为三层:客户端、服务器层以及存储引擎层。其中,服务器层又包括了连接管理、查询缓存 、SQL 接口、解析器、优化器、缓冲与缓存以及各种管理工具与服务等。逻辑结构图如下所示: 具体来说,每个组件的作用如下:客户端,连接 MySQL 服务器的各种工具和应用程序。例如 mysql 命令行工具、mysql

qq_37436172的博客 1915

【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent

Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。 本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。 以水箱模型watertank为例,如下图所示: 采用PI控制器,控制效果如下所示: 将此PI控制器替换为神经网络控制器后,系统架构如下图所示: 具体替换策略如下所示: (1)删去PID控制器; (2)增加RL Agent模块; (3)观测器模块: 观测向量为:,其中...

bear_miao的博客 1万+

MySQL系列(三)— SQL调优工具详解

本篇文章我们来学习一下SQL调优过程中常用的调优工具!

baihehanqiu1314的博客 909

ARCGIS绘制全国各省PM2.5浓度图操作步骤

ArcGIS新手小白一枚,经常需要帮助老师绘制一些简单的空间图,利用ArcGIS绘制全国各省的pm2.5浓度图,简单又方便,不记下来会忘记~

weixin_43458484的博客 1万+

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

MySQL(六):EXPLAIN模拟优化器执行SQL查询语句

explain 执行后结果分析 EXPLAIN SELECT s.SETID, s.DOBJECTCLASS, f.FIELDID, f.DCONTROLID, f.DSUBCONTROLNAME, f.VARNKEY, c.COLUMNID, c.VARNKEY RELVARNKEY, c.CONSTVALUE FROM t_neris_filetran_set s...

F道人 338

【2024/3/12 更新】Windows Server 2019 服务配置与管理汇总

本栏目一共介绍了17种Windows Server 2019 的服务配置与管理,为了方便大家阅读理解,特意总结了17种服务的一些内容。具体说明如下所示

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 2万+

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈

在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQLExplain分析示例 2.1 explain中的列 在查询中的每个表会输出一行,如果有两个表通过 join 连接查询,那么会输出两行 show warnings 命令可以得到优化后的查询语句,从而看出优化器优化了什么 id列的编号是 select 的序列号,有几个 select或者表 就有几个id,并且id的顺序是按 select 出现的顺序增长的。 id列越大执行

qq_33240556的博客 521

手把手打通全流程:在华为昇腾310/Atlas 200DK上实现深度学习模型从移植到部署

通过以上步骤,你已成功在华为昇腾310 Atlas 200DK上完成深度学习模型的移植与推理。这一流程可复用到目标检测、语义分割等其他任务,快去尝试将自己的AI模型部署到昇腾设备上,打造属于你的边缘智能应用吧!上部署深度学习模型,这篇教程将带你走完从模型转换到推理运行的完整流程。无需担心技术壁垒,我们以通俗易懂的方式拆解每一步,让你轻松在昇腾嵌入式设备上实现AI应用。是专为边缘AI设计的高性能处理器,Atlas 200DK是其开发板形态,能高效运行图像分类、目标检测等深度学习任务。

FJN110的博客 181

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SQL 查询为什么慢?从执行计划 EXPLAIN 开始分析

在 MySQL 8.0 之前,EXPLAIN 只是静态预测执行路径,无法反映实际执行的耗时和行数。它会评估每种可选路径的代价,然后选择“最便宜”的执行方式。执行计划显示 orders 表先扫,再关联 users,但 users.age 无索引,导致大量回表操作。它就像 MySQL 提供的“透视眼”,能帮你直观地理解 SQL 执行背后的逻辑,精准找出瓶颈点。EXPLAIN 是 MySQL 提供的分析工具,它不会真正执行 SQL,而是。:虽然 email 上有索引,但函数包裹字段,导致索引失效,变成全表扫描。

小健学Java的博客 2315

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

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

EXPLAIN分析查询语句详解

MySQL数据库使用EXPLAIN查看执行计划详解分析,对涉及的各个字段解释以及type中每个值的解析描述

qq_39964887的博客 1329

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MySQL学习笔记07:MySQL SQL优化与EXPLAIN分析实战指南(上):执行计划深度解析

在高并发的数据库环境中,SQL查询性能直接决定了系统的响应速度和用户体验。一条优化良好的SQL语句和一条性能糟糕的SQL语句,执行时间可能相差成千上万倍。EXPLAIN是MySQL提供的查询分析利器,通过它我们可以洞察MySQL如何执行每一条SQL语句,找出性能瓶颈并制定优化策略。本文将深入剖析EXPLAIN的核心字段,揭示查询优化器的工作原理,并提供实战的SQL调优技巧。

2301_76657443的博客 1776

MySQL性能分析之Explain

一、性能分析 1.1 MySQL Query Optimizer 1.Mysql中有专门负责优化select语句的优化器模块, 主要功能: 通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间) 2.当客户端向MySQL请求一条Query,命令解析器模块完成请求分类,区别出是select并转发给MySQL Query Optimizer时,MySQL Query Optimizer首先会对整.

Jak的博客 438

mysql explain 派生表_MySQL的Explain命令

Explain命令是查看查询优化器如何决定执行查询的主要办法。调用 EXPLAIN要使用EXPLAIN,只需在查询中的SELECT关键字之前增加EXPLAIN。MySQL会在查询上设置一个标记。当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它(一般情况下)。它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序。explain select 1结果示例:在查询中每...

weixin_33923059的博客 387

PostgreSQL - 一文看懂explain

explain是SQL优化的前提。但explain的结果,无论是官方手册,还是别人写的博客,看完后点头如捣蒜,但往往看到自己SQL的执行计划时,并不很确定要优化的点在哪里。很大一部分原因是不知道各计划节点的具体含义,更确切地说,是不明白SQL执行的原理。比如,我们并不能很好地回答以下问题 index scan、index only scan、bitmap index scan 有啥区别? 为什么明明有建立索引,但PG就是不用呢? 执行计划中有子查询就一定不好吗? hash join、merge join.

zou8944的博客 7093

mysql explain ref const_MySQL EXPLAIN 详解

一 .介绍EXPLAIN 命令用于SQL语句的查询执行计划。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。先解析一条sql语句,你可以看出现什么内容EXPLAIN SELECT * FROM person,dept WHERE person.dept_id = dept.did and per...

weixin_30126739的博客 7654

Mysql分析-explain

了解explain原因: 想了解select查询的内部情况,查询优化器是如何工作的,是否使用到了索引,explain可以做到。 MySQL查询优化器是如何工作的 : MySQL查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交SELECT语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度

hann的专栏 1230

explain的用法_[MySQL高级] EXPLAIN用法、结果

1. EXPLAIN简介使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,MySQL是如何处理SQL语句的。分析查询语句或是表结构的性能瓶颈。➤ 通过EXPLAIN,可以分析出以下结果:表的读取顺序数据读取操作的操作类型哪些索引被实际使用表之间的引用每张表有多少行被优化器查询➤ 使用方式如下:EXPLAIN +SQL语句EXPLAIN SELECT * FROM users_domain2...

weixin_39629947的博客 91

MySQL EXPLAIN 全面解析:优化SQL查询的终极指南

使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的sql语句的。分析你的查询语句或是表结构的性能瓶颈。

m0_73566497的博客 754

EXPLAIN 输出怎么看?抓住这 4 个核心指标就够了

EXPLAINEXPLAIN是连接开发者与数据库优化器的桥梁。掌握它,你就能将慢 SQL 优化从一门“玄学”变成一门有据可依的“科学”。1.看type是否为ALL或index?2.看key是否为NULL?是否用对了索引?3.看rows预估扫描行数是否过大?4.看Extra是否出现了或?下一次遇到慢 SQL,不要再凭感觉修改。先EXPLAIN一下,让数据告诉你问题究竟出在哪里。

郑龙飞 1212
上一篇: (ainusers原创) mysql优化器学习
下一篇: (ainusers原创)mysql优化
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值