【MySQL】EXPLAIN(执行计划)关键字是什么?
简介:
explain是一个强大的 SQL 命令,用于分析和优化查询性能。通过查看数据库执行计划,我们可以理解查询是如何被处理的,包括表的访问顺序、使用的索引、连接类型等。这对于找到潜在的性能瓶颈非常重要。
目录
一、基本含义
二、解析执行计划
一、基本含义
当我们在SQL查询前加上explain关键字时,它会给我们返回一张表,其中包含查询的执行计划信息,分别解释一下列值的含义:
1、id:查询的标识符,代表查询的顺序(1、2说明1先执行,2后执行)
2、select_type:查询的类型。如①SIMPLE 简单查询 ②PRIMARY主查询 ③SUBQUERY子查询
3、table:查询中涉及到的表名
4、type:连接类型,表示MySQL如何查找表中的行,常见类型有:
①ALL:全表扫描,可能导致性能变差
②INDEX:索引扫描,表ALL快,但仍会扫描所有索引。
③range:范围扫描,仅扫描匹配的行。
④ref:通过非唯一索引或者唯一索引查找所匹配的行。
⑤eq_ref:通过主键或唯一索引查找所匹配的行,效率较高。
⑥const:通过主键查找的常量值,效率最优。
5、possible_keys:查询可能使用的索引。
6、key:实际使用的索引。
7、key_len:使用的索引长度。有助于判断是否使用了合适的索引。
8、ref:显示哪些列或常量与key值匹配。
9、rows:估算需要读取的行数,以获取最终结果。
10、Extra:其他信息。例如使用临时表或文件排序等。
二、解析执行计划
1、检查连接类型:
1.1:优先使用ref、eq_ref、const类型,这都是些高效率的连接方式。
1.2:避免使用ALL,这会扫描全表索引,显著降低sql性能。
2、查看使用的索引:
2.1:检查 possible_keys 列,查看是否有合适的索引可用。
2.2:确保 possible_keys 列显示了有效的索引,并且key_len足够的短,尽可能提高效率
3、评估rows:
在rows列中查看预估读取的行数,较小的数字意味着更好的性能。
4、注意其他信息:
在 Extra 列中,特别是Using temporary 或 Using filesort 。这通常表明查询的性能受到了影响,需要我们去排查。
三、实际的应用
1、优化查询
2、性能监控:定期使用explain 监控 复杂查询,确保它们没有随着表中数据量的增加而降低效率
3、调试问题:性能不如预期时,通过explain查看。
示例:
a表name加上普通索引

b表age字段加上普通索引
通过explain执行计划查看详细信息:
由此看出,表a通过索引快速定位数据,没有进行全表扫描(ALL)
表b使用了等值连接(eq_ref),有效利用了主键索引。此时我们的索引使用情况是正常的。
相关文章:
【MySQL】EXPLAIN(执行计划)关键字是什么?
简介: explain是一个强大的 SQL 命令,用于分析和优化查询性能。通过查看数据库执行计划,我们可以理解查询是如何被处理的,包括表的访问顺序、使用的索引、连接类型等。这对于找到潜在的性能瓶颈非常重要。 目录 一、基本含义 二…...
Mybatis两种方式来调用sql语句
使用Mybatis时,有两种方式来调用sql语句: 方式一(直接通过Session对象调用sql语句): SqlSession sqlSession sqlSessionFactory.openSession(); User user sqlSession.selectOne("userTest.selectUser"…...
第十八节:学习统一异常处理(自学Spring boot 3.x的第五天)
这节记录下如何通过AOP方式统一处理异常拦截。 第一步: 新建一个exception包,创建一个ExcetionHandler.java(名字随意取) package cn.wcyf.wcai.exception;import cn.wcyf.wcai.common.Result; import org.springframework.web…...
flink中slotSharingGroup() 的详解
在 Apache Flink 中,slotSharingGroup() 是一个用于控制算子(operator)之间资源共享的机制。它允许多个算子共享相同的 slot(即资源容器)。Slot 是 Flink 中的资源单位,slot 共享可以提高资源利用率&#x…...
ASPF 技术介绍
...
77-java 装饰器模式和适配器模式区别
Java中的装饰器模式和适配器模式虽然都涉及到对象的组合和包装,但它们的应用场景和目的有所不同。 装饰器模式的目的是在不修改原始对象的基础上,动态地添加功能或行为。它允许用户通过创建一个包含原始对象的包装类(装饰器ÿ…...
5. Fabric 设置画布大小
1. 设置宽度 canvas.setWidth(width)2. 设置高度 canvas.setHeight(height)3. 设置大小 canvas.setDimensions({width,height })4. 画布的缩放 canvas.on(mouse:wheel, (opt) > {const delta opt.e.deltaY // 滚轮,向上滚一下是 -100,向下滚一下…...
240912-通过Ollama实现网站知识总结
A. 最终效果 B. 准备工作 报错: USER_AGENT environment variable not set, consider setting it to identify your requests.-CSDN博客 C. 完整代码 # https://coreyclip.github.io/Ollama-Web-Summaries/import os os.environ[USER_AGENT] Mozilla/5.0 (Windows NT 10.…...
Debian 包管理工具apt使用
apt基本用法 apt(Advanced Package Tool)是Debian及其衍生发行版(如Ubuntu、Linux Mint等)中非常强大的软件包管理系统。它允许用户从远程仓库安装、更新、升级、配置和卸载软件包。除了我们已经讨论过的卸载软件包的功能外&…...
如何模拟一个小程序项目打包的流程
一、Uni-app 执行 yarn run dev:mp-weixin后会发生什么 (一)准备工作 克隆项目:创建以 typescript 开发的工程(如命令行创建失败,请直接访问 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts.z…...
设计模式七大原则详解
设计模式七大原则详解 设计模式中的“七大原则”是面向对象编程(OOP)中的一组指导原则,这些原则帮助开发者编写灵活、可维护、可扩展的代码。这些原则并不直接等同于设计模式,但它们是设计模式的基础。下面是这七大原则ÿ…...
Navicat On-Prem Server 2.0 | MySQL与MariaDB基础管理功能正式上云
近日,Navicat 发布了 Navicat On-Prem Server 2.0 的重大版本更新。这标志着这款自2021年首发的私有云团队协作解决方案迈入了一个崭新的阶段。此次2.0版本的飞跃性升级,核心聚焦于MySQL与MariaDB基础管理功能的全面革新与强化,赋予了用户的操…...
汽车车门的美观与功能:矫平工艺的精细修复
汽车车门的美观与功能:矫平工艺的精细修复 在汽车制造的精细工艺中,车门不仅是车辆外观的重要组成部分,更是功能性的关键载体。车门的平整度直接影响到车辆的密封性、噪音控制以及整体的美观度。面对生产过程中可能出现的车门变形问题&#…...
【Python】05.Python 中的列表与元组
一、列表与元组的概念 列表是一种在代码中批量表示/保存数据的方式 元组和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改调整, 元组中放的元素是创建元组的时候就设定好的, 不能修改调整 二、列表的创建 创建列表主要有两种方式. [ ] 表示一个空的列表。如果需要往…...
【Go】十五、分布式系统、Consul服务注册发现、Nacos配置中心搭建
分布式 传统开发方式的痛点: 我们的服务分为很多种:用户服务、商品服务、订单服务等,若我们一个成熟的体系内,新添加一个服务,会变得十分的繁琐与困难 当我们的负载较大时,如果选择添加机器的方式来减轻…...
[Linux#48][网络] 令牌环网 | IPv4 | socket 套接字 | TCP | UDP | 网络字节序列
目录 1.网络 1.0 令牌环网(了解) 1.1 IP 地址 1.3 网络通信的基本脉络 IPv4地址解释 2.Socket 编程预备 2.1 端口号 2.2 传输层协议 2.3 网络字节序列 库函数定义 函数说明 1.网络 1.0 令牌环网(了解) 相同令牌时&am…...
Mac OS14外接显示器字体过小和放大字体模糊问题的简单解决
文章目录 问题简述解决方法 问题简述 使用Mac mini外接2K 显示器时,默认分辨率是25601440,字体较小,如果切换成19201080,字体又变大模糊。 解决方法 使用HiDP I(一种显示技术,使用多个物理像素显示1个像…...
Python-pptx:如何在幻灯片中轻松插入与填充表格
哈喽,大家好,我是木头左! 安装和设置Python-PPTX 确保你的系统中已经安装了Python。然后,使用pip安装python-pptx库: pip install python-pptx安装完成后,你就可以开始编写脚本来操作PowerPoint文件了。 创建表格的基础步骤 使用python-pptx创建表格涉及几个关键步骤…...
ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)
ERROR 2003 (HY000): Cant connect to MySQL server on localhost:3306 (10061) mysql-8.0.30-winx64 有时候还是没启动起来的原因,不知道为什么,手动点点 mysql-8.0.30-winx64_mysql8.0.30-CSDN博客...
MySQL优化策略(大数据量)
一、 前提: 1.数据规模 : 明确数据量级是上亿级,这需要特殊的处理,比如分区、索引等策略。 2.数据增长率 : 了解数据的增加速度,有助于预估未来存储和性能需求,从而提前规划扩展策略。 3.访问模式 : 分析是读多写少…...
数字图像处理核心算法手撕实现 (一)
1. 数字图像处理基础概念 数字图像处理就像给照片做美容手术,只不过操作对象是像素矩阵。我第一次接触这个概念是在大学实验室,当时对着一个512x512的灰度图矩阵发呆了半小时,才明白那些0-255的数字代表着什么。 空间分辨率相当于照片的&qu…...
Ollama+Qwen2.5-VL搭建教程:打造你的智能视觉分析工具
OllamaQwen2.5-VL搭建教程:打造你的智能视觉分析工具 1. 引言:为什么选择Qwen2.5-VL 在当今AI技术快速发展的时代,视觉-语言多模态模型正成为解决复杂问题的关键工具。Qwen2.5-VL-7B-Instruct作为通义千问系列的最新成员,在视觉…...
Win11Debloat:5分钟解决Windows 11卡顿的终极优化指南
Win11Debloat:5分钟解决Windows 11卡顿的终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cu…...
让按钮并排布局的艺术
在前端开发中,我们经常需要面对如何让一系列的按钮并排显示而不堆叠在一起的问题。今天,我将带你深入了解如何使用CSS的Flexbox布局来解决这个问题,并通过一个具体的例子展示如何实现这一效果。 问题背景 假设我们有一个页面,包含多个按钮,这些按钮默认情况下是垂直堆叠…...
动态透视报表 + 查询接口 + Excel导出
动态透视报表 查询接口 Excel导出 ✅ 动态行维度(产品 / 型号 / 项目 任意组合)✅ 动态列维度(月份)✅ a / f 子表头✅ SQL 透视(适合 GaussDB)✅ 查询接口 EasyExcel 导出接口✅ 可复用报表引擎 整体…...
SDXL 1.0插件开发:Photoshop脚本自动化集成
SDXL 1.0插件开发:Photoshop脚本自动化集成 1. 为什么需要Photoshop与SDXL 1.0的深度协作 设计师每天面对的不是单一工具,而是一整套工作流。当AI生成图像成为创意起点,问题就来了:生成的图片如何快速进入专业设计环节ÿ…...
uniapp集成腾讯地图:从marker点聚合到轨迹回放的跨端实战与性能调优
1. uniapp集成腾讯地图SDK的核心步骤 第一次在uniapp里用腾讯地图SDK时,我踩了个大坑——直接在H5端跑代码发现地图出不来。后来才明白,腾讯地图在H5端需要单独配置安全域名。具体操作是在腾讯地图开放平台申请key时,必须把H5的域名加入白名单…...
卡证检测矫正模型中小企业降本:替代万元级专用证件扫描仪方案
卡证检测矫正模型:中小企业降本利器,替代万元级专用证件扫描仪方案 1. 引言:一个被忽视的降本痛点 如果你在中小企业负责行政、人事或财务,一定对下面这个场景不陌生:每天要处理一堆身份证、护照、驾照的复印件或扫描…...
像素风AI工具体验:像素史诗智识终端,让研究变得有趣又高效
像素风AI工具体验:像素史诗智识终端,让研究变得有趣又高效 1. 引言:当科研遇上像素冒险 想象一下:你是一位勇者,站在像素风格的城堡前,准备开始一场史诗般的冒险。但这次,你的武器不是剑与盾&…...
Java工业协议解析必须掌握的3种字节序处理范式,附ISO/IEC 61131-3兼容性验证报告
第一章:Java工业协议解析必须掌握的3种字节序处理范式,附ISO/IEC 61131-3兼容性验证报告大端序(Big-Endian)的标准化解析实践 在Modbus TCP与IEC 61850 ACSI通信中,设备寄存器默认采用网络字节序(即大端序&…...
