mysql的explain

explain可以用于select,delete,insert,update的statement。
当explain用于statement时,mysql将会给出其优化器(optimizer)的执行计划。
在这里插入图片描述
通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列的意义。

执行计划表的每一行都描述了查询执行计划中的一个操作或阶段。

id:表示执行顺序,越大越先,相同按展示顺序

select_type(查询的类型)

  • SIMPLE: 一个简单的 SELECT 查询,不包含子查询或 UNION。通常情况下,优化器能够直接确定最佳的执行计划。

  • PRIMARY: 主查询,复杂查询的最外层。

  • SUBQUERY: 不包含在form中的子查询

  • DERIVED: 包含在form中的子查询,mysql会将查询结果放到一个临时表中

  • UNION: 这表示 UNION 查询的第二个或后续查询语句。

table:操作的表

(不重要)partitions:表示查询涉及的分区信息。分区是将表拆分成独立的片段,每个片段称为一个分区,可以根据特定的规则将数据分布到不同的分区中

type:连接方法或者查找中的访问方法

从优到最差的排列:system>const>eq_ref>ref>range>index>ALL

  • null:什么都不做

  • const: 假如user_id 是主键,你使用 WHERE user_id = 1,主键和常量。

  • eq_ref: 访问类型表示在查询中使用了等值连接,并且连接的列在右侧表中是唯一索引,查找聚簇索引树返回数据行。

SELECT *
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;
  • ref: 基于非唯一索引进行查找,可能返回多个匹配值,因此需要通过引用来进行访问。查找聚簇索引树返回数据行。

  • range: 使用索引进行范围扫描,返回一个范围内的行。

  • index: 查找二级索引树返回聚簇索引值。

  • ALL: 全表扫描,检索表中的所有行,这是最慢的访问方式之一。

possible_key(没啥用):就是可能使用的index,但是没使用

key:查询使用的索引

key_len:表示了索引键的前缀长度,或者是索引键的完整长度

ref:

rows:这个值表示了在执行查询时,MySQL 预计需要扫描和检查的行数,而不是实际返回的行数。

filtered:

Extra:

覆盖索引的意思就是查询结果可以完全由索引列提供,而不需要额外的表访问。
eg.SELECT username FROM users; //username有索引,索引列就是结果

  • Using index: 表示 MySQL 使用了覆盖索引,即只使用了索引而没有访问表中的实际行数据。

  • Using where: 表示 MySQL 在查询中使用了 WHERE 子句中的条件进行筛选,而不是在 Using index 标记中的索引中完成筛选。

  • Using temporary: 表示 MySQL 在执行查询时创建了临时表。

创建使用临时表的情况:sort by,group by,join,子查询

  • Using filesort: 表示 MySQL 在执行查询时使用了文件排序操作。

filesort:将查询结果写入临时文件中,并对临时文件中的数据进行排序操作。

  • Using join buffer: 表示 MySQL 在执行联接操作时使用了联接缓冲区,通常发生在需要对大量数据进行联接时,可以提高查询性能。

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

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

相关文章

React Native 之 样式使用(三)

在 React Native 中,使用 JavaScript 来写样式。 所有的核心组件都接受名为style的属性。这些样式名基本上是遵循了web 上的 CSS 的命名,只是按照 JS的语法要求使用了驼峰命名法,例如将background-color改为backgroundColor。 建议使用StyleS…

提升用户体验:Xinstall免邀请码功能详解

在移动互联网时代,App的推广和运营显得尤为重要。然而,传统的App推广方式往往需要用户填写繁琐的邀请码,这不仅降低了用户体验,还影响了推广效果。幸运的是,Xinstall作为国内专业的App全渠道统计服务商,推出…

汽车电子都应用哪些频点的贴片晶振

晶振通过与其它元器件的连接使用,产生脉冲起到信号源的作用,所以在电子圈中有一个很形象的比喻: 如果把芯片比如电路的控制大脑,那晶振产生的信号就是给大脑持续供需的血液。平时,在我们使用的手机,蓝牙耳机&#xff0…

没有疯狂内卷的日本智能机市场,小屏与设计仍旧是主流

如果聊起国内的智能机市场,我想大多数人的印象就是疯狂内卷。卷影像、卷屏幕、卷快充、卷性能……客观地说,国内的3C产品还是很有质价比的。不过在没有如此内卷的日本市场,各种小屏手机仍旧是主流。 除了苹果外,日本本土品牌的夏普…

LeetCode算法题:两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

代码随想录算法训练营第40天|● 343. 整数拆分 ● 96.不同的二叉搜索树

343. 整数拆分 动归 递归拆 class Solution:def integerBreak(self, n: int) -> int:dp[0]*(n1)dp[2]1for i in range(3,n1):for j in range(1,i//21):dp[i]max(dp[i],(i-j)*j,dp[i-j]*j)return dp[n] 公式:全拆3,剩1个4 class Solution:def inte…

学习疲劳(科普)

由于长时间进行学习,在生理和心理方面产生了怠倦,致使学习效率下降,甚至到了不能继续学习的状况。疲劳现象有各种形态,主要可分为生理的(或身体的)疲劳和心理的疲劳。学习既包括身体的活动,也包括精神的活动…

LeetCode657.机器人能否返回原点

题目链接: 657. 机器人能否返回原点 - 力扣(LeetCode) 分析:很简单的模拟问题,同样属于手撕代码最喜欢的部分。 算法思路:定义一个x,y表示每个时刻机器人所在的位置,初始为&#…

python中内置函数简要介绍

pyton3.11版本中常用的内置函数,不需要导入,可直接使用。这些函数大多数都是比较常用的,很多在之前的文章都有介绍过。 大家也可直接到官网查看学习 https://docs.python.org/zh-cn/3.11/library/functions.html。 内置函数 abs() min() …

【CV】opencv调用DIS/LK等计算光流,前一帧和当前帧写反了有什么影响?

当在计算光流时,将前一帧和当前帧输入反了,会导致一系列问题。 在计算光流时,通常是将前一帧作为模板,根据当前帧计算光流。因为光流是描述相邻帧之间像素移动的一种方法,它通过比较两帧之间的像素强度或特征点的移动…

高质量新闻数据集OpenNewsArchive:880万篇主流新闻报道,国产大模型开源数据又添猛料

在构建国产大语言模型的道路上,高质量新闻是不可或缺的重要语料之一。这类语料集准确性、逻辑性、时效性于一体,同时包含丰富的事实知识,可以大幅提升模型的文本生成质量、词汇表达能力、事件理解分析能力以及时序内容的适应性和预测能力&…

《Python编程从入门到实践》day29

# 昨日知识点回顾 修改折线图文字和线条粗细 矫正图形 使用内置格式 # 今日知识点学习 15.2.4 使用scatter()绘制散点图并设置样式 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg)plt.style.use(seaborn-v0_8) # 使用内置格式 fig, ax plt.subpl…

Linux写个脚本执行一系列命令

问题 很多时候需要执行一些列重复的命令,手动执行太麻烦,可以使用写个脚本依次执行。 解决 在Linux中,你可以编写一个Bash脚本文件,其中包含一系列命令,然后一次执行这些命令。 1.使用vim创建你的脚本 vim myscri…

LeetCode494:目标和

题目描述 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ‘’ ,在 1 之…

力扣刷题 day2

快乐数 202. 快乐数 - 力扣(LeetCode)   图: java // 快乐数 --> 19 > 1^2 9 ^2 82 > 82 > 8 ^ 2 2 ^ 2 ......public boolean isHappy(int n) {// 使用快慢指针int slow n, fast getSum(n);while (slow ! fast) {slow getSum(slo…

Coins与Tokens的理解与区别

目录 前言 一、Coins 二、Tokens 三、区别 总结 前言 在区块链和加密货币领域,"coins"(硬币)和"tokens"(代币)是两个常见的术语,它们虽然经常被互换使用,但在区块链领…

【计算机毕业设计】springboot二手家电管理平台

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,二手家电管理平台当然不能排除在外。二手家电管理平台是在实际应用和 软件工程的开发原理之上,运用java语言以及前台VUE框架&#xf…

gorm log with traceId 打印带有traceId信息的日志,通过context实现

背景 无论是单体项目,还是分布式项目,一个请求进来总会有一定的链路,单体项目中会调用各种方法,分布式服务中更麻烦一点,跨服务调用。于是乎,我们就希望有一个全局的traceId可以把一个请求过程中经过的所有…

2024OD机试卷-游戏分组 (java\python\c++)

题目:游戏分组 题目描述 部们准备举办一场 王者荣耀 表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为实力尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的…

基于SSM的婚恋网站的设计与实现(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的婚恋网站的设计与实现(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spri…