MySQL EXPLAIN命令 优化

MySQL EXPLAIN命令 优化

 

      EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相。

 

      调用EXPLAIN,只需要在查询SQL中的SELECT关键字之前增加EXPLAIN命令即可。

 

 EXPLAIN中的列

ColumnMeaning
id标识SELECT所属的行,id越大优先执行,id相同自上而下执行。
select_type查询类型:分为简单和复杂类型;复杂类型分为三类:简单子查询、派生表(在FROM字句中的子查询),以及UNION查询。
table这一列显示正在访问哪张表。
type访问类型,MYSQL决定如何查找表中的行。
possible_keys可能选择的索引。
key实际使用的索引。
key_len索引里使用的字节数。
ref哪一列或常数在查询中与索引键列一起使用。
rowsMYSQL估计为了找到所需的行而要读取的的行数,通过把所有rows列的值相乘,可以粗略地估算出整个查询会检查的行数。
Extra不适合在其他列显示的额外信息。

 

 select_type列

valueMeaning
SIMPLE简单查询,不包括子查询和UNION。
PRIMARY如果查询有任何复杂的子部分,则最外层部分标记为PRIMARY。
UNIONUNION中第二个语句或随后的SELECT被标记为UNION。
DEPENDENTUNIONUNION中第二个语句或后面的语句,独立于外部查询。
UNIONRESULTUNION的结果。
SUBQUERY包含在SELECT列表中的子查询SELECT标记为SUBQUERY。
DEPENDENTSELECT依赖于外层查询中发现的数据。
DEPENDENT SUBQUERY子查询中第一个SELECT,独立于外部查询。
DERIVED包含在FROM子句的子查询中的SELECT。
MATERIALIZED物化子查询。
UNCACHEABLESUBQUERY结果集不能被缓存的子查询,必须重新评估外层查询的每一行。
UNCACHEABLEUNIONUNION中第二个语句或后面的语句属于不可缓存的子查询。

 

type列

valueMeaning
All全表扫描。
index跟全表扫描一样,只是MYSQL扫描表时按索引次序进行而不是行。
range使用索引检索给定范围内的行。有限制的索引扫描,开始于索引里的某一点,返回匹配这个值域的行。
ref一种索引访问,访问只有当使用非唯一性索引或者唯一性索引的非唯一性前缀时才会发生。
ref_or_nullref之上的一个变体,MYSQL必须在初次查找的结果里进行第二次查找以找出NULL条目。
eq_ref使用这种索引查找,最多只返回一条符合条件的记录,MYSQL只用主键或者唯一性索引时看到。
const表最多只有一个匹配行,在查询开始时被读取。因为只有一个值,优化器将该列值视为常量。
system表仅一行数据,这是const连接类型的特例。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

禁止使用服务器 IP 访问 Apache 环境下的 Web 站点 通过在 Apache 的配置文件中添加适当的指令,我们可以轻松地禁止使用服务器 IP 地址访问我们的 Web 站点。在 Apache 环境下,有时我们希望禁止用户使用服务器的 IP 地址直接访问我们的 Web 站点,而只允许使用域名进行访问。现在,当用户尝试使用服务器的 IP 地址来访问你的网站时,他们将会被拒绝访问,只有通过域名才能正常访问。为了实现这个目标,我们可以通过 Apache 的配置文件进行相应的设置。表示禁止对根目录的访问权限,即禁止使用服务器的 IP 地址进行访问。 阅读详情

相关推荐

PADS Layout差分对布线实战:从规则设置到高速信号优化

本文详细讲解了在PADS Layout中进行差分对布线的完整实战流程。从在Layout中定义差分对网络,到进入Router配置线宽、间距等关键规则,再到布线实战技巧与高速信号完整性优化,系统阐述了如何确保差分信号(如USB、HDMI)的稳定传输,是高速PCB设计的核心技能。

weixin_29274969的博客 524

sql优化工具使用之explain

转载自:https://www.jianshu.com/p/c5026c716946 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过EXPLAIN去完成。EXPLAIN命令是查看优化器如何决定执行查询的主要方法。可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采

白小白的小白的博客 378

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2205

MySQL 执行计划explain详解

explain命令是查看查询优化器如何决定执行查询的主要方法。 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。 调用EXPLAIN ...

cq377078944的博客 445

基于Simulink的IEEE33节点配电网仿真实战:从建模到分布式能源集成

本文详细介绍了基于Simulink的IEEE33节点配电网仿真实战,从基础建模到分布式能源集成。通过MATLAB脚本管理参数、搭建Simulink模块,并集成风机和光伏系统,实现高效配电网仿真。文章还涵盖潮流计算、故障分析及性能优化技巧,为电力系统仿真提供实用指导。

git9versioner的博客 993

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解)

本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。

weixin_26905487的博客 553

MySQL性能优化神器Explain使用分析

简介 我们前面介绍过慢查询,通过慢查询可以定位执行效率较差的SQL语句,定位到一个SQL语句以后,我们下面就是要探究为什么该SQL语句执行效率很低,是因为全表扫描、还是索引设置不当,这些信息都需要通过EXPLAIN来获取。 EXPLAIN命令是查看优化器如何决定执行查询的主要方法。它可以对SELECT语句进行分析,并输出SELECT执行的详细信息,以供开发人员针对性优化。EXPLAIN命令用法...

Stay Hungry, Stay Foolish 679

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 224

MySQL EXPLAIN详解,left join和in优化详解,以及optimizer_trace跟踪语句使用

简述: explain为mysql提供语句的执行计划信息。可以应用在select、delete、insert、update和place语句上。explain的执行计划,只是作为语句执行过程的一个参考,实际执行的过程不一定和计划完全一致,但是执行计划中透露出的讯息却可以帮助选择更好的索引和写出更优化的查询语句。 EXPLAIN输出项(来源于mysql5.7文档) 备注:当使用FORMAT=JSON, 返回的数据为json结构时,JSON Name为null的不显示。 Column JSON Na

zzhongcy的专栏 9271

APM32取代STM32的经验分享

我仔细检查了代码中与硬件相关的部分,例如外设寄存器的访问和中断处理程序的设置,并进行了相应的修改。在本文中,我将分享我将APM32引入项目中取代STM32的经验,并提供相应的源代码。我查看了APM32的官方网站、开发者论坛和相关社交媒体,了解了开发者社区的活跃度和可用的资源。总结起来,将APM32替换STM32的过程需要经过几个关键步骤:了解APM32的规格和功能、评估软件生态系统、迁移代码和调试,以及性能和功耗优化。在开始替换之前,我对APM32进行了详细的研究和评估,以确保它能够满足项目的需求。

UplKubernetes的博客 2006

基于STM32、HAL库的CH9434总线转UART驱动程序设计

CH9434是一款USB转4串口控制芯片,可以将单个USB接口扩展为4个独立的串口(UART)。支持多种数据格式(数据位5-8,停止位1/1.5/2,奇偶校验或无校验)// 读取接收到的数据。// 重新启动接收中断。// 向所有4个串口发送数据。// UART初始化函数示例(USART1)// 其他UART初始化函数类似...// 初始化CH9434。// 初始化UART1。// 初始化UART2。// 初始化UART3。// 初始化UART4。工作电压:3.3V/5V兼容。

corlin6688的博客 990

mysql查询优化explain命令详解

​mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式。explain翻译即解释,就是看mysql语句的查询解释计划,从解释计划我们能很清楚的看到解释的语句有没有合理用到索引,扫描了多少行数,有没有触及全表扫描、用到临时表等影响慢查询的原因。 使用很简单,如 explainsel...

weixin_34256074的博客 193

超强干货之---Python-数据爬取(爬虫)

定义: 深度优先搜索是一种遍历或搜索树或图的算法,从起始节点开始,一直沿着一个分支走到底,再回溯到上一个节点继续搜索下一个分支,直到遍历完所有节点。特点递归:通常用递归实现,或者使用栈来模拟递归过程。内存占用低:在有大量分支的情况下,内存占用比广度优先搜索低。适合目标较深的情况:如果目标节点距离起始节点较深,DFS能更快找到目标。适用场景需要遍历所有节点的情况,如生成树、迷宫搜索。目标节点较深,且分支较多时。在大规模数据爬取时,选择合适的存储方式取决于数据的规模、结构和访问需求。

房东的猫的博客 5万+

MySql Explain优化命令使用

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

m0_65419210的博客 1343

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

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL关于EXPLAIN进行Sql优化命令详解

MySQL的EXPLAIN命令是分析查询执行计划的重要工具,可帮助开发者进行SQL性能优化。其输出包含id、select_type、table等关键列,其中type列(访问类型)和Extra列(附加信息)尤为重要,能直观反映查询性能。type列按性能排序,从最优的system到最差的ALL(全表扫描);Extra列则显示"Using index"等优化信息或"Using temporary"等需优化的警告。通过EXPLAIN分析简单查询和复杂语句,结合格式化输出和警告

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1442

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL查询优化神器:EXPLAIN命令详解与实战

一个高效的查询不仅可以节省资源,还能提升用户体验。然而,如何才能知道你的SQL查询是否高效呢?这时,EXPLAIN 就成为了你的得力助手。

weixin_59930657的博客 956

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MySQL优化EXPLAIN命令详解

MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明。 EXPLAIN Output Columns 列名 说明 id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。否则,内层的select语句一般会顺序编号,对应于其在原始语句中的位置 select_type 显示本行是简单或复杂select。如果查询有任何复杂的子查询,则最外层标记为PRIMAR...

芙蓉帐暖的博客 436

MYSQL优化:EXPLAIN命令的使用

EXPLAIN MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了 一般,使用explain分析问题主要从以下三个方面分析: 当前查询是否走了索引? 走的索引是不是期望的? 索引还有没有改进的空间,sql还有没有优化的余地? 这三点通过explain返回的各种字段来做分析,一般优化后需要反复查看explain来作出最

· 813

MySQL EXPLAIN命令:优化SQL查询性能的终极指南

MySQL的EXPLAIN命令是优化SQL查询的关键工具,通过分析其输出可显著提升性能。核心优化点包括:关注type字段(访问类型),优先实现const/eq_ref级别;检查key字段确保使用索引;减少rows预估扫描行数;消除Extra中的Using filesort和Using temporary。索引优化需遵循最左前缀原则,创建覆盖索引,精简索引结构。SQL语句应避免SELECT *,优化子查询,控制连接表数量。通过迭代分析EXPLAIN结果并针对性调整,可系统性提升查询效率。

HTTP404_CN的博客 514

关于MySQL优化必备之 Explain 命令的讲解

文章目录基本使用介绍explain命令各字段简洁说明explain 命令的各字段详细讲解(重点)idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra MySQL explain 命令是查询性能优化不可缺少的一部分,该文主要讲解 explain 命令的使用及相关参数说明。 基本使用介绍 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的 SQL 语句,找出这些 SQL 语句并不意味着完事了。 此时我们常常用到 explain

不知名博客 255

MySQL优化之Explain命令解读

文章目录1.id2.select_type3.table4.partitions5.type6.possible_keys7.key8.key_len9.ref10.rows11.filtered12.Extra 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 使用方式:Explain+SQL语句 执行如下图: 执行计划后包含以上信息,我们挨个解读: 1.id SELECT查询的序列号,包含一组数字,表示查询

Conceptual Universe 495

MySQL - 查询优化指南之『EXPLAIN 命令』详解

EXPLAIN 是 MySQL 中用于分析 SQL 查询执行计划的关键工具,它能帮助开发者理解查询的执行方式并找出性能瓶颈。下面我将详细介绍 EXPLAIN 的使用方法和输出字段的含义,并通过实际示例说明如何优化查询。

qq_45696804的博客 1682

EXPLAIN命令详解MySQL查询性能优化的必备利器

EXPLAIN是MySQL提供的一个关键字,用于显示MySQL如何执行一条SELECT语句。通过在SELECT语句前加上EXPLAIN关键字(例如:EXPLAIN SELECT FROM table_name WHERE ...),MySQL不会真正执行该查询,而是返回一个关于查询执行计划的详细报告。这份报告展示了查询所涉及的表的读取顺序、可能用到的索引、表之间的连接类型、以及需要扫描的大致行数等。理解这份报告是进行高效SQL优化的第一步。

lovesco的博客 1772

【MySQL笔记】SQL优化利器 - explain命令的输出格式详解

有MySQL使用经验的同学在实际项目中可能会遇到SQL慢查询的场景,有些场景很容易定位问题所在(如单表操作有慢查询SQL时,仔细check SQL语句通常很容易定位索引问题),而有些复杂业务场景(如多表联合查询几十个字段并做group或sort等操作)下,人工check SQL语句通常很难发现SQL瓶颈所在。这个时候,MySQL提供的explain命令就派上用场了。 本笔记主要对explain的

slvher的专栏 2649

mysql 5.7 explain_MySQL优化之Explain命令解读

简述:explain为mysql提供语句的执行计划信息。可以应用在select、delete、insert、update和place语句上。explain的执行计划,只是作为语句执行过程的一个参考,实际执行的过程不一定和计划完全一致,但是执行计划中透露出的讯息却可以帮助选择更好的索引和写出更优化的查询语句。EXPLAIN输出项(可参考mysql5.7文档)备注:当使用FORMAT=JSON, 返回...

weixin_42464317的博客 463

mysql 优化命令_MySQL索引优化神器--explain命令

对MySQL索引进行优化时,有一个神器,就是explain命令(也可以使用DESC命令,效果一样),下面简单介绍下explain命令。explain命令可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的可以帮我们分析SQL语句或者表结构的性能瓶颈。通过explain命令,我们可以得到:- 表的读取顺序- 数据读取操作的操作类型- 哪些索引可能使用- 哪些索引被实际使用- 表...

weixin_34878397的博客 180
上一篇: Linux zip 删除zip文件中的一个文件
下一篇: 2018年最后一个工作日
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值