explain

在这里插入图片描述

  • id :select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序
  • select_type:查询类型 或者是 其他操作类型
  • table :正在访问哪个表
  • partitions :匹配的分区
  • type :访问的类型,评价sql性能的一个指标
  • possible_keys :显示可能应用在这张表中的索引,一个或多个,但不一定实际使用到
  • key :实际使用到的索引,如果为NULL,则没有使用索引
  • key_len :表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
  • ref :显示索引的哪一列被使用了,如果可能的话,是一个常数,哪些列或常量被用于查找索引列上的值
  • rows :根据表统计信息及索引选用情况,大致估算出找到所需的记录所需读取的行数
  • filtered :表示符合查询条件的数据占全部数据的百分比
  • Extra :包含不适合在其它列中显示但十分重要的额外信息

select_type

  • SIMPLE: 简单查询,不包含子查询或UNION。
  • PRIMARY: 主查询,包含子查询时最外层的查询。
  • SUBQUERY: 子查询,出现在SELECT或WHERE中的独立子查询。
  • DEPENDENT SUBQUERY: 相关子查询,结果依赖于外部查询的列。
  • UNCACHEABLE SUBQUERY: 无法缓存的子查询(如含随机函数或变量)。
  • UNION: UNION操作中第二个或后续的SELECT语句。
  • UNION RESULT: UNION操作的结果集。
  • DERIVED: 派生表(子查询在FROM子句中)。
  • MATERIALIZED: 物化子查询,结果被存储为临时表供后续使用。

type单表访问方法

连接类型,有如下几种取值,性能从好到坏排序 如下:

  • null:MySQL能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引,如select 1;

  • system:该表只有一行(相当于系统表),system是const类型的特例

  • const:“常数”,针对主键或唯一索引的等值查询扫描, 最多只返回一行数据。 const 查询速度非常快, 因为它仅仅读取一次即可

  • eq_ref:当使用了索引的全部组成部分,并且索引是PRIMARY KEY或UNIQUE NOT NULL 才会使用该类型,性能仅次于system及const。

  • ref:搜索条件为二 级索引列与常数进行得值比较,形成的扫描区为单点扫描区间 采用二级索引来执行查询"的访问方法称为 ref。

  • fulltext:全文索引

  • ref_or_null:该类型类似于ref,但是MySQL会额外搜索哪些行包含了NULL。这种类型常见于解析子查询

  • index_merge:此类型表示使用了索引合并优化,表示一个查询里面用到了多个索引

  • unique_subquery:该类型和eq_ref类似,但是使用了IN查询,且子查询是主键或者唯一索引。

  • range

    SELECT * FROM single_table WHERE key2 IN (1438, 6328) OR (key2 >= 38 AND key2 <= 79);

    ​ 如果使用 idx_key2 执行该查询,那么对应的扫描区间就是 [1438, 1438]、[6328, 6328] 以及 [38, 79]。设计 MySQL 的大叔把“使用索引执行查询时,对应的扫描区间为若干个单点扫描区间或者范围扫描区间”的访问方法称为 range(仅包含一个单点扫描区间的访问方法不能称为 range 访问方法,扫描区间为 (−∞,+∞) 的访问方法也不能称为 range 访问方法)。

    ​ 范围扫描,表示检索了指定范围的行,主要用于有限制的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN、LIKE、IN()等操作符。

  • index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型。有两种场景会触发:

    • 如果索引是查询的覆盖索引,并且索引查询的数据就可以满足查询中所需的所有数据,则只扫描索引树。此时,explain的Extra 列的结果是Using index。index通常比ALL快,因为索引的大小通常小于表数据。
    • 按索引的顺序来查找数据行,执行了全表扫描。此时,explain的Extra列的结果不会出现Uses index。
  • ALL:全表扫描,性能最差。直接扫描主键索引叶子节点文件

extra

展示有关本次查询的附加信息,取值如下:

  • Using filesort:当Query 中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL Query Optimizer 不得不选择相应的排序算法来实现。数据较少时从内存排序,否则从磁盘排序。Using tempporary:在对MySQL查询结果进行排序时,使用了临时表,这样的查询效率是比外部排序更低的,常见于order by和group by。

  • Using index:使用了索引覆盖

  • Using where:使用了where进行过滤,即使用到了索引,如果没有索引,说明是去聚集索引全盘扫描,说明没用到where进行过滤,只用where进行判断

  • Using index condition:使用了索引下推

  • Using MRR:使用了Multi-Range Read优化

  • Using join buffer:使用了连接缓存,比如说在查询的时候,多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些

  • Distinct:查找distinct值,当找到第一个匹配的行后,就不再搜索了

  • id :select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

  • select_type:查询类型 或者是 其他操作类型

  • table :正在访问哪个表

  • partitions :匹配的分区

  • type :访问的类型,评价sql性能的一个指标

  • possible_keys :显示可能应用在这张表中的索引,一个或多个,但不一定实际使用到

  • key :实际使用到的索引,如果为NULL,则没有使用索引

  • key_len :表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

  • ref :显示索引的哪一列被使用了,如果可能的话,是一个常数,哪些列或常量被用于查找索引列上的值

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

  • filtered :表示符合查询条件的数据占全部数据的百分比

  • Extra :包含不适合在其它列中显示但十分重要的额外信息

select_type

  • SIMPLE: 简单查询,不包含子查询或UNION。
  • PRIMARY: 主查询,包含子查询时最外层的查询。
  • SUBQUERY: 子查询,出现在SELECT或WHERE中的独立子查询。
  • DEPENDENT SUBQUERY: 相关子查询,结果依赖于外部查询的列。
  • UNCACHEABLE SUBQUERY: 无法缓存的子查询(如含随机函数或变量)。
  • UNION: UNION操作中第二个或后续的SELECT语句。
  • UNION RESULT: UNION操作的结果集。
  • DERIVED: 派生表(子查询在FROM子句中)。
  • MATERIALIZED: 物化子查询,结果被存储为临时表供后续使用。

type单表访问方法

连接类型,有如下几种取值,性能从好到坏排序 如下:

  • null:MySQL能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引,如select 1;

  • system:该表只有一行(相当于系统表),system是const类型的特例

  • const:“常数”,针对主键或唯一索引的等值查询扫描, 最多只返回一行数据。 const 查询速度非常快, 因为它仅仅读取一次即可

  • eq_ref:当使用了索引的全部组成部分,并且索引是PRIMARY KEY或UNIQUE NOT NULL 才会使用该类型,性能仅次于system及const。

  • ref:搜索条件为二 级索引列与常数进行得值比较,形成的扫描区为单点扫描区间 采用二级索引来执行查询"的访问方法称为 ref。

  • fulltext:全文索引

  • ref_or_null:该类型类似于ref,但是MySQL会额外搜索哪些行包含了NULL。这种类型常见于解析子查询

  • index_merge:此类型表示使用了索引合并优化,表示一个查询里面用到了多个索引

  • unique_subquery:该类型和eq_ref类似,但是使用了IN查询,且子查询是主键或者唯一索引。

  • range

    SELECT * FROM single_table WHERE key2 IN (1438, 6328) OR (key2 >= 38 AND key2 <= 79);

    ​ 如果使用 idx_key2 执行该查询,那么对应的扫描区间就是 [1438, 1438]、[6328, 6328] 以及 [38, 79]。设计 MySQL 的大叔把“使用索引执行查询时,对应的扫描区间为若干个单点扫描区间或者范围扫描区间”的访问方法称为 range(仅包含一个单点扫描区间的访问方法不能称为 range 访问方法,扫描区间为 (−∞,+∞) 的访问方法也不能称为 range 访问方法)。

    ​ 范围扫描,表示检索了指定范围的行,主要用于有限制的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN、LIKE、IN()等操作符。

  • index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型。有两种场景会触发:

    • 如果索引是查询的覆盖索引,并且索引查询的数据就可以满足查询中所需的所有数据,则只扫描索引树。此时,explain的Extra 列的结果是Using index。index通常比ALL快,因为索引的大小通常小于表数据。
    • 按索引的顺序来查找数据行,执行了全表扫描。此时,explain的Extra列的结果不会出现Uses index。
  • ALL:全表扫描,性能最差。直接扫描主键索引叶子节点文件

extra

展示有关本次查询的附加信息,取值如下:

  • Using filesort:当Query 中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL Query Optimizer 不得不选择相应的排序算法来实现。数据较少时从内存排序,否则从磁盘排序。Using tempporary:在对MySQL查询结果进行排序时,使用了临时表,这样的查询效率是比外部排序更低的,常见于order by和group by。

  • Using index:使用了索引覆盖

  • Using where:使用了where进行过滤,即使用到了索引,如果没有索引,说明是去聚集索引全盘扫描,说明没用到where进行过滤,只用where进行判断

  • Using index condition:使用了索引下推

  • Using MRR:使用了Multi-Range Read优化

  • Using join buffer:使用了连接缓存,比如说在查询的时候,多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些

  • Distinct:查找distinct值,当找到第一个匹配的行后,就不再搜索了

  • id :select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

  • select_type:查询类型 或者是 其他操作类型

  • table :正在访问哪个表

  • partitions :匹配的分区

  • type :访问的类型,评价sql性能的一个指标

  • possible_keys :显示可能应用在这张表中的索引,一个或多个,但不一定实际使用到

  • key :实际使用到的索引,如果为NULL,则没有使用索引

  • key_len :表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

  • ref :显示索引的哪一列被使用了,如果可能的话,是一个常数,哪些列或常量被用于查找索引列上的值

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

  • filtered :表示符合查询条件的数据占全部数据的百分比

  • Extra :包含不适合在其它列中显示但十分重要的额外信息

select_type

  • SIMPLE: 简单查询,不包含子查询或UNION。
  • PRIMARY: 主查询,包含子查询时最外层的查询。
  • SUBQUERY: 子查询,出现在SELECT或WHERE中的独立子查询。
  • DEPENDENT SUBQUERY: 相关子查询,结果依赖于外部查询的列。
  • UNCACHEABLE SUBQUERY: 无法缓存的子查询(如含随机函数或变量)。
  • UNION: UNION操作中第二个或后续的SELECT语句。
  • UNION RESULT: UNION操作的结果集。
  • DERIVED: 派生表(子查询在FROM子句中)。
  • MATERIALIZED: 物化子查询,结果被存储为临时表供后续使用。

type单表访问方法

连接类型,有如下几种取值,性能从好到坏排序 如下:

  • null:MySQL能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引,如select 1;

  • system:该表只有一行(相当于系统表),system是const类型的特例

  • const:“常数”,针对主键或唯一索引的等值查询扫描, 最多只返回一行数据。 const 查询速度非常快, 因为它仅仅读取一次即可

  • eq_ref:当使用了索引的全部组成部分,并且索引是PRIMARY KEY或UNIQUE NOT NULL 才会使用该类型,性能仅次于system及const。

  • ref:搜索条件为二 级索引列与常数进行得值比较,形成的扫描区为单点扫描区间 采用二级索引来执行查询"的访问方法称为 ref。

  • fulltext:全文索引

  • ref_or_null:该类型类似于ref,但是MySQL会额外搜索哪些行包含了NULL。这种类型常见于解析子查询

  • index_merge:此类型表示使用了索引合并优化,表示一个查询里面用到了多个索引

  • unique_subquery:该类型和eq_ref类似,但是使用了IN查询,且子查询是主键或者唯一索引。

  • range

    SELECT * FROM single_table WHERE key2 IN (1438, 6328) OR (key2 >= 38 AND key2 <= 79);

    ​ 如果使用 idx_key2 执行该查询,那么对应的扫描区间就是 [1438, 1438]、[6328, 6328] 以及 [38, 79]。设计 MySQL 的大叔把“使用索引执行查询时,对应的扫描区间为若干个单点扫描区间或者范围扫描区间”的访问方法称为 range(仅包含一个单点扫描区间的访问方法不能称为 range 访问方法,扫描区间为 (−∞,+∞) 的访问方法也不能称为 range 访问方法)。

    ​ 范围扫描,表示检索了指定范围的行,主要用于有限制的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN、LIKE、IN()等操作符。

  • index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型。有两种场景会触发:

    • 如果索引是查询的覆盖索引,并且索引查询的数据就可以满足查询中所需的所有数据,则只扫描索引树。此时,explain的Extra 列的结果是Using index。index通常比ALL快,因为索引的大小通常小于表数据。
    • 按索引的顺序来查找数据行,执行了全表扫描。此时,explain的Extra列的结果不会出现Uses index。
  • ALL:全表扫描,性能最差。直接扫描主键索引叶子节点文件

extra

展示有关本次查询的附加信息,取值如下:

  • Using filesort:当Query 中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL Query Optimizer 不得不选择相应的排序算法来实现。数据较少时从内存排序,否则从磁盘排序。Using tempporary:在对MySQL查询结果进行排序时,使用了临时表,这样的查询效率是比外部排序更低的,常见于order by和group by。
  • Using index:使用了索引覆盖
  • Using where:使用了where进行过滤,即使用到了索引,如果没有索引,说明是去聚集索引全盘扫描,说明没用到where进行过滤,只用where进行判断
  • Using index condition:使用了索引下推
  • Using MRR:使用了Multi-Range Read优化
  • Using join buffer:使用了连接缓存,比如说在查询的时候,多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些
  • Distinct:查找distinct值,当找到第一个匹配的行后,就不再搜索了

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

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

相关文章

让大模型“更懂人话”:对齐训练(RLHF DPO)全流程实战解析

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

GO 原子操作面试题及参考答案

Go 的 sync/atomic 包和 sync.Mutex 的根本区别是什么&#xff1f; Go 语言中的 sync/atomic 包和 sync.Mutex 都用于处理并发编程中的同步问题&#xff0c;但它们的实现机制、应用场景和性能特性存在根本差异。理解这些差异对于编写高效、安全的并发代码至关重要。 sync/atomi…

MATLAB 山脊图绘制全解析:从数据生成到可视化进阶

一、引言&#xff1a;当数据分布拥有「层次感」—— 山脊图的魅力​ 在数据可视化的世界里&#xff0c;我们常常需要同时展示多个分布的形态差异。传统的重叠密度图虽然能呈现整体趋势&#xff0c;但当分布数量较多时&#xff0c;曲线交叠会让画面变得杂乱。这时候&#xff0c…

跨境电商每周资讯—6.16-6.20

1. Instagram 在亚太地区逐渐超越 TikTok 在整个亚太地区&#xff0c;Instagram用户数量正逐渐超过TikTok。预计2025年日本Instagram用户数量将增至4440万&#xff0c;印度今年用户数量将增长10%&#xff0c;领跑亚太。与之形成对比的是&#xff0c;TikTok在一些国家增长速度放…

计算机网络 网络层:数据平面(一)

前一节学习了运输层依赖于网络层的主机到主机的通信服务&#xff0c;提供各种形式的进程到进程的通信。了解这种主机到主机通信服务的真实情况&#xff0c;是什么使得它工作起来的。 在本章和下一章&#xff0c;将学习网络层实际是怎样实现主机到主机的通信服务。与运输层和应用…

Suna本地部署详细教程

一、安装基础环境 # 1、创建环境 conda create -n suna python3.11.7# 2、激活虚拟环境 conda activate suna# 3、安装jupyter和ipykernel pip install jupyter ipykernel# 4、将虚拟环境添加到jupyter # python -m ipykernel install --user --namemyenv --display-name"…

LeetCode 每日一题打卡|若谷的刷题日记 3day--最长连续序列

1.最长连续序列 题目&#xff1a; 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [1…

EfficientVLA:面向视觉-语言-动作模型无训练的加速与压缩

25年6月来自上海交大、哈工大、西安交大和电子科大&#xff08;成都&#xff09;的论文“EfficientVLA: Training-Free Acceleration and Compression for Vision-Language-Action Models”。 视觉-语言-动作 (VLA) 模型&#xff0c;特别是基于扩散的架构&#xff0c;展现出具…

wireshark抓包分析TCP数据包

1、直接从TCP的三次握手开始说起 三次握手就是客户与服务器建立连接的过程 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态服务器收到SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,然后就会进入SYN_RECV状态客户收到服务器的SYN报文,回应一个ACK(AC…

同等学力申硕-计算机统考-历年真题和备考经验

同等学力申请硕士学位考试是比较适合在职人员的提升学位方式&#xff0c;了解过的人应该都知道&#xff0c;现在社会的竞争压力越来越大&#xff0c;为了提高职业生存能力&#xff0c;提升学位在所难免。 一、已有计算机统考历年真题资料 报名过同等学力申硕计算机专业的朋友都…

OSI网络通信模型详解

OSI 模型就是把这整个过程拆解成了 7 个明确分工的步骤&#xff0c;每一层只负责自己那一摊事儿&#xff0c;这样整个系统才能顺畅运转&#xff0c;出了问题也容易找到“锅”在谁那。 核心比喻&#xff1a;寄快递 &#x1f4e6; 想象你要把一份重要的礼物&#xff08;你的数据…

C++ 检测文件大小和文件传输

检测文件的大小 你可以通过标准 C/C 的文件 API 很方便地获取文件的字节大小&#xff0c;以下是几种常用方法&#xff1a; ✅ 方法一&#xff1a;使用 stat() 函数&#xff08;推荐&#xff09; #include <sys/stat.h> #include <stdio.h>off_t get_file_size(co…

Ubuntu 中修改网卡 IP

在 Ubuntu 中修改网卡 IP 地址可以通过以下方法实现&#xff0c;具体取决于你使用的网络管理工具&#xff08;如 netplan、ifconfig/ip 命令或传统 interfaces 文件&#xff09;。以下是常见方法&#xff1a; 方法 1&#xff1a;使用 netplan&#xff08;Ubuntu 17.10 及更新版…

记录学习three.js 为什么 .glTF 是更适合 Web 的 3D 模型格式?——从 .OBJ 到 .glTF 的转变⑭

在上一篇中&#xff0c;我们介绍了如何在 Three.js 中加载 .OBJ 模型。如果你没看过&#xff0c;建议先阅读一下基础内容。然而你很快会发现&#xff0c;.OBJ 虽然入门简单&#xff0c;却并不是 Web3D 场景中的最佳格式。 .OBJ 是什么&#xff1f; .OBJ 是最早期的3D交换格式之…

H递归函数.go

前言&#xff1a;递归函数是一种强大而又充满魅力的编程技巧。它就像是一面神奇的镜子&#xff0c;函数在其中能够调用自身的倒影&#xff0c;从而以一种简洁而优雅的方式解决许多复杂的问题。 目录 一、递归函数是啥玩意儿 二、递归函数的优缺点 优点 缺点 三、递归函数…

软件功能测试的测试标准

一、软件功能测试行业标准概述 软件功能测试行业标准是规范软件测试流程、方法、工具及人员资质的准则&#xff0c;是确保软件产品的功能性、可靠性、易用性等质量特性符合用户需求。这些标准不仅为测试人员提供了明确的指导&#xff0c;也为软件产品的质量控制提供了有力保障。…

EchoEar(喵伴):乐鑫发布与火山引擎扣子联名 AI 智能体开发板

随着生成式人工智能技术的快速发展&#xff0c;大语言模型 (LLM) 正逐步成为推动智能设备升级的核心力量。乐鑫科技携手火山引擎扣子大模型团队&#xff0c;共同推出智能 AI 开发套件 —— EchoEar&#xff08;喵伴&#xff09;。该套件以端到端开发为核心理念&#xff0c;构建…

图像特征检测算法SIFT

SIFT&#xff08;Scale - Invariant Feature Transform&#xff0c;尺度不变特征变换&#xff09;是一种计算机视觉领域的特征提取算法&#xff0c;具有重要的地位和广泛的应用。 算法原理 构建高斯金字塔 &#xff1a; 为了实现多尺度检测&#xff0c;SIFT 算法会构建高斯金…

光纤通道收发器:市场洞察、技术演进与未来机遇

一、引言 在数字化浪潮席卷全球的当下&#xff0c;数据存储与传输的需求呈爆发式增长。光纤通道收发器作为高速、可靠数据存储网络&#xff08;如存储区域网络 SAN&#xff09;中的关键组件&#xff0c;发挥着至关重要的作用。它通过光纤实现服务器、存储设备和交换机之间的数…

candence17.4如何设置两个焊盘之间在TOP与BOTTOM可以存在两根线

为什么要走两根线&#xff1f; 为了过大电流&#xff0c;有时候就需要我们在TOP、BOTTOM两个面走线&#xff0c;同时开窗&#xff0c;然后通过加锡的方式增加过流能力&#xff1b; 当然由于两面都有导线&#xff0c;必然会存在过孔&#xff0c;而过孔的过流能力不仅与过孔孔径…