MySQL学习——执行计划

news/2024/5/3 1:51:50/文章来源:https://www.cnblogs.com/CircleWang/p/16715516.html

  MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的,这将有利我们做代码的优化。

1、MySQL查询执行过程

  • 客户端向MySQL服务器发送一条查询请求
  • 服务器首先检查查询缓存,若缓存中存在,则立刻返回存储在缓存中的结果。否则进入下一阶段
  • 服务器进行SQL解析、预处理、再由优化器生成对应的执行计划
  • MySQL根据执行计划,调用存储引擎的API来执行查询
  • 将结果返回给客户端,同时缓存查询结果

2、启动执行计划

EXPLAIN SELECT 投影列 FROM 表名 WHERE 条件 

3、EXPLAIN 列的解释

  我们执行上述语句之后,会得到如下结果,下面我们将来解释每一个字段代表的含义。

  3.1、ID

  查询的执行顺序:

  • id值相同时从上向下执行。
  • id值相同的视为同一组。
  • 如果是子查询,id值会递增,id值越高则有限制越高。

 3.2、select_type

SIMPLE:表示当前查询中不包含子查询或者UNION

PRIMARY:当查询中包含任何复杂的子部分,最外层的查询被标记成primary

DERIVED:在from中包含的子查询被标记为derived

SUBQUERY:在select或者where中包含了子查询,则子查询被标记为subquery

UNION:两个select查询时前一个标记为PRIMARY,后一个标记为UNION。union出现在from子查询中,则外层select标记位PRIMARY,union的第一个查询标价为DERIVED

UNION RESULT:从union表获取结果的select被标记为union result

 3.3、table

  显示这一行的数据时关于那张表的,如果这个表在查询中给了别名,则这里显示的就是表的别名。

 3.4、partitions

  如果MySQL中做了分区了,则会表示数据来源于那个分区。

 3.5、type

  这是非常重要的一列,表示了当前的连接使用了那种类型(消耗的代价),从查询效率从最好到最差的连接类型是:system > const > eq_ref > ref > range > index > ALL。

  • system :表中只有一行数据。属于const的特例。如果物理表中就只有一行数据则这里会显示ALL。
  • const :查询结果最多有一个匹配行。因为只有一行所以被视为常量。const查询速度非常快,因为只读一次,一般情况下把主键或唯一索引作为唯一条件的查询时会是const。
  • eq_ref :查询时查询外键表全部数据。且只能查询主键列或关联列。且外键表中外键列中数据不能有重复数据,这些数据都必须在主键表中有对应数据(主键表中数据可以有 没有用到的)
  • ref :相比eq_ref,不对外键列有强制要求,即:外键列中数据可以重复,只要出现重复的数据取值就是ref。也可能时索引查询。
  • range :把这个列当作条件只检索其中一个范围。常见where子句中出现between、<、in等操作时会出现。主要应用在具有索引的列中才会出现。
  • index :这个连接类型对前边的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表的数据),相当于扫描了索引树。
  • ALL:这个连接类型对于前面的每一个记录联合惊醒完全扫描,一般是比较糟糕的需要避免。

 3.6、possible_keys

  查询条件字段涉及到的索引名。

 3.7、key

  实际使用的索引,如果是NULL,则没有使用索引。

 3.8、key_len

  表示索引中使用的字节数,查询中使用的索引长度(最大可能长度),并非实际使用长度,理论上长度越短越好。key_len时根据表定义计算而得的,不是通过表内检索出的。

 3.9、ref

  显示索引的那一列被使用了,一般在组合索引中那些被使用

 3.10、rows

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

 3.11、filtered

  显示了通过条件过滤出的行数的百分比估计值。

 3.12、extra

  MySQL如何解析查询的额外信息。常见的包括:Distinct,Not exists,Using index....等等等,如果见到可以搜索下

 

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

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

相关文章

扫码挪车小程序源码专业版上线了

1 、做挪车码之前&#xff0c;先说一些我个人的观点&#xff0c;大家一起探讨学习交流。 2 、挪车码已经是普遍已久的项目&#xff0c;其核心主要在于解决了车主的隐私问题。 3 、观察过目前市面上所有的挪车码系统&#xff0c; 公司也购买了一套测试了完整流程&#xff0c;盈…

【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】

一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏图像处理(Matlab) 备注: 点击上面蓝色字体付费专栏图像处理(Matlab),…

parted分区步骤

parted分区步骤概述 通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大;而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘。但是现在的磁盘空间很多都已经是远远大于2T了,甚至达到2.5T和3T,那要怎么办能,有两…

路径规划总结(一)

第三讲 路径规划 ps:排版有一些问题&#xff0c;懒得改了&#xff0c;见Github 一、导航规划简介 导航规划&#xff1a;在给定环境的全局或局部知识以及一个或者一系列目标位置的条件下&#xff0c;使机器人能够根据知识和传感器感知信息高效可靠地到达目标位置。 导航规划类…

告别传统FTP!该了解一下替代FTP的新产品了

在某些情况下&#xff0c;需要从服务器上传&#xff08;或下载&#xff09;文件。多年来&#xff0c;最流行的文件传输方法是文件传输协议&#xff08;FTP)。FTP的一大优点是它支持断点续传。FTP收获了方便性&#xff0c;却在安全性上有所欠缺。FTP未加密&#xff0c;这意味着格…

Cache-Augmented Inbatch Importance Resampling for Training Recommender Retriever

目录概符号说明启发本文方法BIR (inbatch importance resampling)XIR (Cache-Augmented Resampling)Chen J., Lian D., Li Y., Wang B., Zheng K. and Chen E. Cache-augmented inbatch importance resampling for training recommender retriever. In Advances in Neural Info…

一条sql了解MYSQL的架构设计

1 前言 对于一个服务端开发来说 MYSQL 可能是他使用最熟悉的数据库工具&#xff0c;然而&#xff0c;大部分的Java工程师对MySQL的了解和掌握程度&#xff0c;大致就停留在这么一个阶段:它可以建库、建表、建索引&#xff0c;然后就是对里面的数据进行增删改查&#xff0c;语句…

MacOS/OSX docker修改已运行容器参数的方法

比如我们刚刚docker run了一个容器,然后里面已经配置了一些信息,装了一些东西,然后我发现我忘记了挂载一个文件夹,怎么修改他们呢? 第一个方法: export容器为镜像再import这个镜像 第二个方法: 把现有的容器提交成镜像,然后重新运行. 以上两种方法都相当于你把一台电…

配置服务器入栈

配置服务器入栈 上回传送门 书接上回 登录我们的服务器管理页面 点击入站列表->点击号 配置如下 注意&#xff1a; 协议是vless 域名是cloudflare上我们设置的二级域名 公钥文件路径就是我们SHH工具上root 文件夹下cret 文件夹下面的证书 公钥名就是我们的证书路径 密钥…

Spring Cloud Alibaba现在还值不值学 ?

6年前面试最常问的并且可以顺利拿到高薪的技能是 Dubbo &#xff0c;2年前面试&#xff0c;只要你简历上有 Spring Cloud 项目的相关经验&#xff0c;肯定会打动面试官&#xff0c;现在呢&#xff1f;恐怕简历上有Dubbo和简单的Spring Cloud技术和经验是无法让面试官高看你的。…

Eureka注册中心以及Ribbon负载均衡

Eureka注册中心 远程调用的问题 1、服务消费者改如何获取服务提供者的地址消息&#xff1f; 2、如果服务提供者有多个&#xff0c;消费者如何进行选择&#xff1f; 3、 消费者如何得知服务提供者的健康状态&#xff1f; Eureka的作用 服务每隔30s给Eureka发送心跳&#xff0c;…

一个技术创业者的自白:三条关于 “选择” 的建议

本文作者 Wyze CTO 刘天强。内容源自「声网开发者创业讲堂第一期」的演讲分享。创业方向:兴趣 VS 趋势 大家在创业的时候首先要选择的是 “做什么”?如何平衡个人特长、兴趣以及风口是创业者面临的难题。我在第一次创业的时候,做了一家主打图像识别 API 的公司 Orbeus,这家…

水电站生态流量下泄监测解决方案

水电站生态流量下泄监测解决方案   一些水电站因下泄生态流量不足造成部分河段减水、脱水甚至干涸的情况&#xff0c;使得群众的生产、生活以及河流的正常生态功能受到了一定程度的影响。计讯物联水电站生态流量下泄监测解决方案精准测量、实时监测、视频监控、预警提醒、及时…

JWT实现用户token令牌管理

以前的登录&#xff1a; 用户登录成功返回user对象 将user对象存储在session中 在拦截器中取出session中的user对象&#xff0c;判断是否已经登录&#xff0c;决定是否放行 token&#xff1a; 用户登录成功后&#xff0c;根据指定的用户信息生成一个token令牌 token令牌是…

Matlab论文插图绘制模板第49期—散点矩阵图(Plotmatrix)

在之前的文章中&#xff0c;分享了很多Matlab散点图的绘制模板&#xff1a; 这一次&#xff0c;再来分享一种特殊的散点图&#xff1a;散点矩阵图。 先来看一下成品效果&#xff1a; 本文主要展示带直方图的散点矩阵图的绘制方法&#xff0c;不带直方图的散点矩阵图的绘制方法…

【智能优化算法-水循环算法】基于蒸发的水循环算法求解用带约束的优化问题附matlab代码

1 内容介绍 2 部分代码 clear all; clc; close all; format long g objective_function=@fun; constraints=@Constraints; for k=1:1 % Number of independent runds %=====================================================================&#

半车(前后、左右)、整车悬架模型仿真分析

目录 前言 1.前后(Pitch)半车主动悬架模型 1.1 simulink前后半车悬架建模 1.1.2 搭积木法建模 1.1.3 S-Function建模(被动悬架为例) 1.2 仿真结果 2.左右(Roll)半车悬架模型(不含转向) 2.1 Simulink模型 2.2 仿真结果 3.整车悬架模型(不含转向) 3.1 整车7自由度主动悬架数…

二十七、Java 枚举(enum)

Java 枚举(enum) Java 枚举是一个特殊的类&#xff0c;一般表示一组常量&#xff0c;比如一年的 4 个季节&#xff0c;一个年的 12 个月份&#xff0c;一个星期的 7 天&#xff0c;方向有东南西北等。 Java 枚举类使用 enum 关键字来定义&#xff0c;各个常量使用逗号 , 来分割…

为什么 Aave、 Curve 等协议都在创建自己的稳定币

$GHO 和 $crvUSD 的推出近在咫尺&#xff0c;那么特定于协议的稳定币是下一个大叙事吗&#xff1f; 在所有的加密货币类型中&#xff0c;稳定币仍然拥有最大的产品市场契合度。 这是因为它们允许投资者在 DeFi 中使用美元敞口来进行交易、支付、存储价值或获得收益。 如今&a…

Actipro WPF Studio语法编辑器和停靠控件

Actipro WPF Studio语法编辑器和停靠控件 对接 向选项卡式 MDI 选项卡添加了“全部浮动”菜单项&#xff0c;它将容器中的所有停靠窗口浮动在一起。 改进了目标坞站主机命中测试逻辑。 改进了与 WebView2 控件相关的焦点跟踪。 增加了默认的 TabbedMdiHost.MaxTabExtent 宽度&a…