MySQL的分析查询语句(EXPLAIN):

目录

基本语法:

各个字段的含义:

id:

select_type:

table:

partitions:

type:

possible_keys:

key:

key_len:

ref:

row:

filtered:

extra:


EXPLAIN用于解析SQL语句的执行计划,展示MySQL如何进行查询。

基本语法:

EXPLAIN SELECT 具体的执行语句;

各个字段的含义:

id:

在一个大的查询语句中每一个select关键字都对应一个唯一的id。

需要注意的是:

1.查询优化器可能会对设计子查询的查询语句进行重写,将子查询转换为多表查询的操作。

所以可能id编号和select数不等。如:

explain select * from 表1 where 字段 in (select 字段1 from 表2
where 条件);

2.因为union是要进行去重的,进行去重时是在表1和表2组成的临时表中去重。所以会多一条记录。临时表记录id为NULL。注意union all是不需要去重的,所以不用建立临时表。

3.id相同的话,优先级相同,从上往下顺序执行。id不同的话,id越大优先级越高,就越先执行。

4.每一个id表示一趟独立的查询,sql查询的趟数越少越好。

select_type:

select关键字对应的查询类型。

查询语句中不包含union或者子查询的为"SIMPLE"。

当包含union(union all)或者子查询时,其中外层主查询的查询为"PRIMARY",第二个查询以及之后的查询为"UNION"。

包含union(union all)的查询中,如果小查询都依赖于外层查询,那么除了最左边的小查询之外,其余的都是"DEPENDENT UNION"。

对于union查询去重的,是在临时表上进行的去重,所以针对该临时表为"UNION RESULT"。

对于子查询,如果包含子查询的语句不能转化为多表查询且该子查询不为相关子查询,那么该子查询第一个select关键字代表的查询为"SUBQUERY",但是如果是相关子查询,那么则为"DEPENDENT SUBQUERY"。

对于派生表的查询,该派生表对应的子查询是"DERIVED"。

当查询优化器在致辞那个包含子查询的语句时,将子查询物化之后与外层查询进行连接查询时,该查询为"MATERIALIZED"。

table:

无论查询语句多复杂包含多少个表,都是需要对每一个表进行单表访问的,索引MySQL规定explain语句输出的每条记录都对应着某个单表的访问方法(每一行记录都对应着一个单表),该条记录的table列代表着该表的表名,不一定是真实的表名也可能是实际表、派生表或UNION结果集的临时表。

partitions:

代表分区表中的命中情况,非分区表为NULL,一般情况下都是NULL。

type:

表示数据访问方式,按效率从高到低。

当表中只有一条记录且该表使用的存储引擎的统计数据是精确的,为"system"。

根据主键或者唯一二级索引列与常数进行等值匹配,为"const"。

连接查询时,被驱动表通过主键或者唯一二级索引列等值匹配,为"eq_ref"。

普通二级索引列与常量等值匹配,该索引列的值也可以为NULL时,可能为"ref_or_null"。

包含in子查询的语句中,如果优化器将in子查询转化为exists子查询且可以使用主键进行等值匹配,为"unique_subquery"。

使用索引能够获取范围区间的记录,为"range"。

当使用索引覆盖,但需要扫描全部索引时,为"index"。

全表扫描时,为"all"。

possible_keys:

查询时可能用到的索引,一般涉及到的字段存在索引都会列出,但是不一定使用。

key:

实际查询用到的索引,如果没有使用索引则为NULL。

key_len:

查询中实际使用到的索引长度(字节数)。检查是否充分利用了索引,值越大越好,主要针对于联合索引,判断具体命中了哪些列。

ref:

使用索引列等值查询时,与索引进行等值匹配的对象信息。

row:

预估的需要读取的记录条数,值越小越好,因为读取的数据量越小,I/O次数可能会更少。

filtered:

经过搜索条件过滤后的记录条数占预估读取的记录数的百分比,值越大越好,说明越匹配。

extra:

补充查询时的额外信息。

当查询语句没有from子句时会提示"no table used"。

查询语句where子句永远为false时将会提示"impossible where"。

使用全表扫描来执行对某个表的查询,且该语句中有针对该表的搜索条件(未完全利用索引),会提示"using where"。

当查询列表处有MIN或者MAX聚合函数,但没有符合的where子句的搜索条件的记录时,会提示"no matching min/max row",如果有的话,则提示"select tables optimized away"。

当查询列表以及搜索条件只包含属于某个索引的列,也就是覆盖索引,会提示"using index"。

当使用左(外)连接时,如果where子句中包含要求被驱动的某个列等于null值的搜索条件且不允许存储null值时,会提示"using where; not exists"。

当limit子句的参数为0,提示"zero limit"。

如果查询使用了文件排序的方式执行查询,会提示"using filesort",需要进行优化,为排序字段增加索引。

查询中借助了临时表,则会提示"using temporary",需要优化,最好用索引替代临时表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93391.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ #if

在 C 中,#if 是 预处理器指令(Preprocessor Directive),用于 条件编译,即在编译阶段根据条件决定是否包含某段代码。它通常与 #define、#ifdef、#ifndef、#else 和 #endif 配合使用。基本语法#if 条件表达式// 如果条件…

方案 | 动车底部零部件检测实时流水线检测算法改进

项目背景随着我国高速铁路运营里程突破4.5万公里,动车组日均开行超过8000列次,传统人工巡检方式已无法满足密集运行下的安全检测需求。车底关键部件如制动系统、悬挂装置、牵引电机等长期承受高强度振动和冲击,易产生疲劳裂纹、螺栓松动、部件…

企业收款统计:驱动业务决策的核心引擎设计开发——仙盟创梦IDE

代码完整代码<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>黑金风格职员统计</title><style>/* 页面基础样式 - 黑金风格 */body {font-family: Segoe UI, Tahoma, Geneva, Verdana, …

CIAIE 2025上海汽车内外饰展观察:从美学到功能的产业跃迁

在智能化、电动化浪潮推动下&#xff0c;汽车产业的市场格局、技术路线、供应链结构与用户体验正被系统性重塑。汽车感知空间核心的“内外饰件”&#xff0c;正从原本的结构性、功能性部件&#xff0c;逐步跃升为智能化、情感化和差异化体验的重要承载载体&#xff0c;开启了从…

Spring IOC容器在Web环境中的启动奥秘:深入源码解析

一、为何需要关注IOC容器启动&#xff1f;在Java Web开发中&#xff0c;Spring MVC框架的基石正是IOC容器。但你是否思考过&#xff1a;独立的IOC模块如何与Tomcat等Servlet容器协同工作&#xff1f; 其启动过程与Web容器的生命周期深度绑定&#xff0c;这是构建稳定Spring应用…

前端JS处理时间,适用于聊天、操作记录等(包含刚刚、x分钟前、x小时前、x天前)

export default {// 首页时间转化formatDate(val) {var nowDate new Date()var oldDate new Date(val)const Y oldDate.getFullYear()const M oldDate.getMonth() 1const D oldDate.getDate()var diff nowDate.getTime() - oldDate.getTime()var minutes Math.floor(di…

C#---StopWatch类

老方法&#xff0c;想要全面了解和学习一个类必先看文档 微软文档 1.StopWatch 提供一组方法和属性&#xff0c;可用来测量运行时间。 1.1 属性和方法 属性&#xff1a; 方法&#xff1a; 1.2 使用 using System.Diagnostics;namespace Study04_反射专题 {internal cla…

3DTiles转OSGB格式逆向转换方法研究

一、概述 在倾斜摄影的应用领域中&#xff0c;3DTiles与OSGB格式的互转是常见的技术需求。作为专业的GIS处理平台&#xff0c;GISBox凭借其先进的倾斜摄影反切功能&#xff0c;为用户提供了高效、稳定的跨格式数据转换解决方案。 二、3DTiles转OSGB的意义 保留原始几何与纹理…

【门诊进销存出入库管理系统】佳易王医疗器械零售进销存软件:门诊进销存怎么操作?系统实操教程 #医药系统进销存

前言&#xff1a; &#xff08;一&#xff09;试用版获取方式 资源下载路径&#xff1a;进入博主头像主页第一篇文章末尾&#xff0c;点击卡片按钮&#xff1b;或访问左上角博客主页&#xff0c;通过右侧按钮获取详细资料。 说明&#xff1a;下载文件为压缩包&#xff0c;使用…

华为交换机配置文件的相关命令和用法

文章目录一、基本配置命令一、基本配置命令 1、查看当前运行的配置文件 <Huawei>display current-configuration2、配置文件保存 <Huawei>save <Huawei>save vrpcfg-20250623.zip #保存为指定文件名3、查看保存的配置 <Huawei>display saved-configu…

【汽车标定数据】动态优先级线程池在异步多文件解析中的应用

目录 一、需求背景 项目背景&#xff1a;电控数据管理系统优化 优化方案&#xff1a;引入OLAP数据库和动态线程池 线程池性能急需解决的问题 资源过载与闲置的平衡&#xff1a; 优先级处理与公平性&#xff1a; 任务类型适配性&#xff1a; 二、线程池介绍 2.1、线程池…

Unity人形角色IK优化指南

目录 Unity中人形角色的IKI 站立、奔跑IK 1. 接触面法线 2. 调整质心位置 3. 保持原本朝向 攀爬IK 1. 四肢贴合 2. 保持身体与攀爬面的距离 3. 适应外拐角 瞄准IK 1. 头部朝向 2. 手臂朝向 尾声 本文将尝试仅使用Untiy内置的Animator来解决常见的几种运动所需的IK…

基于wireshark的USB 全速硬件抓包工具USB Sniffer Lite的使用

1、前言 随着MCU的发展和需求的增多&#xff0c;USB已成为主流MCU的标配外设&#xff0c;但很多还是全速或低速IP&#xff0c;因此往往用不上高速抓包设备。 2、安装wireshark和拷贝抓包插件 将抓包插件拷贝到wireshark的extcap目录里&#xff0c;可参考基于wireshark的USB …

easyexcel模板导出Map数据时空值列被下一行列非空数据覆盖

场景是&#xff1a;我用模板导出数据&#xff0c;sheet数据是一个List<String,Object>集合&#xff0c;然后发现第一行的第三列应该为空&#xff0c;但是不为空&#xff0c;填上了第二行的第三列数据&#xff1b;就像按列写数据&#xff0c;碰到空值&#xff0c;下一行数…

并行Builder-输出型流程编排的新思路

如果对于框架的介绍不感兴趣的可以直接跳到Getting Started快速开始 在设计一款数据加载编排框架时&#xff0c;除了任何框架都必须具备的可靠性与稳定性之外&#xff0c;对于本次编排框架的设计&#xff0c;我们把核心目标放在高性能与易用性上。这不仅要求框架能够快速、高效…

C#WPF实战出真汁03--登录界面设计

1、登录界面设计要点简洁直观的布局 登录界面应避免复杂元素&#xff0c;突出核心功能。通常包含用户名/邮箱输入框、密码输入框、登录按钮及可选功能&#xff08;如“记住我”“忘记密码”&#xff09;。保持表单字段不超过5个&#xff0c;减少用户认知负担。清晰的视觉层次 通…

前端css学习笔记6:盒子模型

本文为个人学习总结&#xff0c;如有谬误欢迎指正。前端知识众多&#xff0c;后续将继续记录其他知识点&#xff01; 目录 前言 一、组成 ​编辑content padding border margin margin塌陷 margin合并 使用场景 标题与段落间距 卡片列表布局 二、内容溢出—overflo…

以下是对智能电梯控制系统功能及系统云端平台设计要点的详细分析,结合用户提供的梯控系统网络架构设计和系统软硬件组成,分点论述并补充关键要点:

智能电梯控制系统功能及系统云端平台设计要点一、梯控系统网络架构设计服务本地化&#xff1a;电梯门禁服务器本地化部署&#xff1a;核心服务器部署在项目本地&#xff0c;确保数据安全、运维及时性&#xff0c;减少网络依赖。需支持本地独立运行&#xff0c;避免云端故障影响…

全球电商业财一体化:让出海品牌实现“看得见的增长“

内外贸并行的数字化挑战在数字经济浪潮下&#xff0c;中国品牌呈现"双轮驱动"增长态势&#xff1a;一边深耕天猫、京东、抖音等国内主流平台&#xff0c;一边通过Amazon、Tiktok、eBay、Temu等渠道拓展全球市场。然而&#xff0c;多平台、多币种、多地区的复杂运营环…

Nacos-5--Nacos2.x版本的通信原理

Nacos 2.x引入了gRPC作为其主要的通信协议&#xff0c;取代1.x版本中的HTTP长轮询和UDP通信方式&#xff0c;显著提升了性能、实时性和稳定性。gRPC是一个高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;它基于HTTP/2标准设计&#xff0c;并使用Protoc…