【MySQL】第十一部分 SELECT的执行过程

mysql中select的执行流程 描述:MySQL数据库由Server层和存储引擎层组成。Server层是处理客户端请求、SQL语句解析和优化的中心,而存储引擎层则负责数据的物理存储和索引。总结SELECT查询语句执行的关键步骤强调优化器和索引在查询性能中的重要性总结本文深入探讨了MySQL执行SELECT查询语句的内部机制,从连接器的连接建立到查询缓存的检查,再到解析器、预处理器、优化器和执行器的协同工作,最后由存储引擎完成数据的检索。连接器确保了安全、有效的连接,并进行了用户认证。查询缓存。 阅读详情

【MySQL】第十一部分 SELECT的执行过程



11. SELECT的执行过程

11.1 SQL92语法的结构

SELECT ...
FROM TABLE
WHERE 多表连接的条件 AND 不包含聚合函数的过滤条件
GROUP BY 分组	
HAVING 	包含聚合函数的过滤条件
ORDER BY 排序
LIMIT 限制数据条数

11.2 SQL92语法的结构

SELECT ...
FROM TABLE JOIN TABLE ON 多表连接的条件
WHERE 不包含聚合函数的过滤条件
GROUP BY 分组	
HAVING 	包含聚合函数的过滤条件
ORDER BY 排序
LIMIT 限制数据条数

11.3 语句执行顺序

两种语法执行顺序都是一样的

在这里插入图片描述

FROM ==> WHERE ==> GROUP BY ==> HAVING ==> SELECT ==> DISTINCT ==> ORDER BY ==> LIMIT
# 查询10,20,30,40,50号部门中最高薪资并且大于8000 别名"薪资",根据薪资降序显示前2个部门的信息
SELECT department_id,MAX(salary) "薪资"   # 顺序 5
FROM employees   # 顺序 1
WHERE department_id IN (10,20,30,40,50)  # 顺序 2
GROUP BY department_id  # 顺序 3
HAVING MAX(salary) > 8000  # 顺序 4
ORDER BY MAX(salary) DESC  # 顺序 5
LIMIT 0,2; # 顺序 5

11.4 解释之前遗留问题

# 查询10,20,30,40号部门中最高薪资并且大于10000
# 写法一
SELECT department_id,MAX(salary)
FROM employees 
WHERE department_id IN(10,20,30,40)
GROUP BY department_id
HAVING MAX(salary) > 10000;

# 写法二 (不推荐,效率低)
SELECT department_id,MAX(salary)
FROM employees 
GROUP BY department_id
HAVING MAX(salary) > 10000 AND department_id IN(10,20,30,40);

为什么写法二的效率低?
根据上述语句的执行顺序,GROUP BY分组后,HAVING对分组后的每个部门进行条件筛选,接着AND只要10-40号部门,那么其他部门不就白计算了,导致效率低下

写法一, 先进行WHERE筛选出需要的部门,在对这些部门进行分组,最后HAVING再去筛选,所需要计算的数据量小,并且不会浪费

根据执行顺序也可以解释为什么SELECT语句中取别名,WHERE语句中使用不了,而ORDER BY 中可以使用, 因为WHERE比SELECT先执行,所以SELECT去别名看不见,同理ORDER BY 可以使用.

FROM ==> WHERE ==> GROUP BY ==> HAVING ==> SELECT ==> DISTINCT ==> ORDER BY ==> LIMIT

总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

[Windows] 发票识别工具。支持xml、pdf、ofd文件。 发票识别是财务自动化中的关键环节,支持多种格式(XML、PDF、OFD)的识别工具能显著提升工作效率。以下介绍基于Windows平台开发此类工具的技术方案。发票识别是财务自动化中的关键环节,支持多种格式(XML、PDF、OFD)的识别工具能显著提升工作效率。以下介绍基于Windows平台开发此类工具的技术方案。 阅读详情

相关推荐

【3】Ubuntu18.04下载与安装,以及中文输入法的安装

Ubuntu18.04下载与安装一、下载二、安装(在VMware 16 pro中安装Ubuntu18.04)三、Ubuntu中安装中文输入法1.检查 fcitx 框架2.安装输入法 一、下载 下载地址:Ubuntu Releases 往下拉,找到自己需要的安装版本(建议不要安装最新版,因为你在使用时候遇到的错误大多都是以前版本的,最新版本的,解决方案特别少) 我这里安装的是Ubuntu18.04 一般都是使用desktop版本的(desktop版和server版本的区别:请看这篇文章) 之后点击下载即

斯基的朦胧 1万+

mysql中Select执行全过程

如果 SQL 是查询语句(select 语句),MySQL 就会先去查询缓存( Query Cache )里查找缓存数据,看看之前有没有执行过这一条命令,这个查询缓存是以 key-value 形式保存在内存中的,key 为 SQL 查询语句,value 为 SQL 语句查询的结果。对于mysql连接,需要先经过tcp的三次握手,若密码都没有问题,会验证用户权限,然后保存起来,后续该用户在此连接里的任何操作,都会基于连接开始时读到的权限进行权限逻辑的判断。修改完成后,只有再新建的连接才会使用新的权限设置。

qq_63728673的博客 1663

dreamerv3复现教程

由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。

无人机飞啊飞啊飞 2833

【MySQL系列】- SELECT语句执行顺序

MYSQL语句每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。

记录总结工作过往 1463

STM32C8T6HAL库实战:MAX30102心率血氧检测与OLED多级菜单一体化方案

本文详细介绍了基于STM32C8T6和HAL库的MAX30102心率血氧检测与OLED多级菜单一体化方案。内容涵盖硬件连接、CubeMX工程配置、传感器驱动移植、数据滤波算法、OLED显示驱动以及高效的多级菜单系统设计,旨在提供一个稳定、实用且易于移植的嵌入式健康监测项目参考。

weixin_29256771的博客 396

【RS】哨兵系列数据下载(哨兵2号Sentinel-2波段介绍、下载)

以哨兵二号为示例,分享如何下载欧空局的哨兵系列数据

Remote Sensing迷途小书童 1万+

MySQL Select语句执行流程深度解析

SELECT语句是MySQL中最常用的操作之一,了解其执行流程对于数据库性能优化和问题排查至关重要。本文将详细剖析MySQL中SELECT语句的完整执行流程,从连接建立到结果返回的每个关键环节。客户端与服务器建立连接(5.7及之前版本)检查查询缓存解析SQL生成解析树优化器生成执行计划执行器调用存储引擎接口存储引擎访问数据(可能涉及Buffer Pool)返回结果给客户端。

m0_62910542的博客 500

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

MySQL中SELECT语句的执行过程

使用组合索引时,可能会有部分字段无法使用到索引,这时可以使用索引下推来减少回表操作,索引下推就是将所有查询条件都判断完成后再回表,没有使用索引下推就只判断了使用到索引的字段,其余字段的查询条件还需要回到Server层来判断。组合索引当遇到范围查询 (>、<) 就会停止匹配,也就是。

boluomi的博客 3256

[RAM] DRAM 导论:DDR4 | DDR5 | LPDDR5 | GDRR6 | HBM 应运而生

有数据的地方就有存储, 内存是谁都离不开的产品。而动态随机存取存储器(DRAM)作为一种常见的内存。本博客将介绍DRAM的基本概念、工作原理、优缺点以及应用领域等方面。

串起点滴 3917

ConvNeXt 改进 :ConvNeXt添加GnConv递归门控卷积,二次创新CNBlock结构 ,独家首发

视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnConv),通过门控卷积和递归设计执行高阶空间交互。该新操作具有高度的灵活性和可定制性,兼容各种卷积变体,并将自注意力中的二阶交互扩展到任意阶数,而不会引入显著的额外计算。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 234

mysql的select语句执行流程

Mysql中select语句执行流程 1、mysql架构 mysql结构(照片有点模糊,但是不妨碍理解。大家也可自行查找) mysql主要功能模块: 1)连接器(连接/线程处理器):主要负责管理客户端连接,权限验证。 2)查询缓存:负责缓存查询结果。 3)解析器:对sql语句进行词法分析,语法分析,校验sql语句。 4)优化器:对解析器解析完成的sql生成执行计划,选择索引。 5)存储引擎:存储数据,负责提供读写接口。 其中1)至4)称为mysql服务层,5)称为mysql的存储引擎层。 2、select

ylwanlxm的博客 1309

基于MATLAB的多无人机多任务调度算法——CBBA带时间窗

本文将介绍基于MATLAB的CBBA算法,并对其进行改进,加入时间窗概念,以提高多无人机系统的调度效率和性能。时间窗用于限定任务的执行时间范围,以避免任务执行时间过长或过短导致的问题。具体而言,我们为每个任务设置一个允许的最早开始时间和最晚结束时间,并在任务分配的过程中考虑这些时间约束。在多无人机系统中,需要将若干个任务分配给不同的无人机完成,以实现高效的任务执行。以上是关于基于MATLAB的多无人机多任务调度算法CBBA带时间窗的简要介绍和源代码实现。多无人机系统的调度问题。

BUG?不存在的! 1898

MySQL讲义第 53 讲——select 查询之 select 语句执行过程分析

MySQL讲义第 53 讲——select 查询之 select 语句执行过程分析 SELECT 语句包含多个子句,SELECT 语句在书写时需要遵循一定的顺序,否则会提示语法错误。而在执行过程中,各子句又有相应的执行顺序,在使用字段别名时需要注意各子句的执行顺序。 一、数据准备 以下查询使用到四张表,分别是:student、teacher、course 和 electives,表结构如下: CREATE TABLE student( s_id char(5) primary key, s

睿思达DBA 1154

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL中select查询语句的执行过程

本文详细介绍了MySQL查询语句的执行过程,包括SQL组件介绍、执行顺序和执行流程。MySQL查询分为Server层和存储引擎层,Server层包含连接器、查询缓存、解析器、优化器和执行器等组件。文章重点解析了SELECT语句的执行流程,从连接认证到语法解析、预处理、优化器生成执行计划,再到执行器与存储引擎交互,最后返回结果。此外,还介绍了流式查询的实现方式,如JDBC流式Statement和MyBatis的ResultHandler接口,以避免大数据量查询时的内存溢出问题。最后提供了常见性能优化建议和参考

weixin_50055999的博客 2019

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MySQL语法--05--SELECT的执行过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录MySQL执行顺序SQL语句的书写顺序SQL语句的执行顺序:SELECT的执行过程1 查询的结构2 SELECT 查询时的两个顺序:3 SQL 的执行原理多表查询==所谓底层运行的原理,就是我们刚才讲到的执行顺序==。 MySQL执行顺序 SQL语句的书写顺序 select * | 列名 – 确定要查询的列有哪些 from 表名 – 确定查询哪张表 where 条件 – 通过筛选过滤,剔除不符合条件的记录 group by 分组

时光里的博客 1869

Mysql中Select语句的执行顺序

今天同事问了我个问题,select语句中的别名可以在哪些地方使用,一听这个我就想到了聚合函数、group by、having、order by。然后它又问我可以在 join on中使用嘛?,我陷入了思考,想了下这其实跟select语句的执行顺序有关,因为记不太清了,所以再次学习了下,并记录一下。本文总结了mysql中select的执行顺序,并对几个常见的疑问进行了解答,希望能对你有所帮助。

sky2019116的博客 2276

简单说说MySQL中 SELECT 语句执行流程

MySQL 中SELECT用户向 MySQL 服务器发送SELECT查询语句。MySQL 收到 SQL 语句后,会将查询语句进行词法和语法分析。词法分析器,然后语法分析器根据 MySQL 语法规则。。这是 MySQL。优化器决定如何执行查询,。MySQL 的优化器会生成多个执行计划,选择成本最低的计划。执行器根据优化器生成的执行计划去执行查询语句。,按优化器的指示选择适当的访问方式,如是否使用索引,是否需要回表等。MySQL 是多存储引擎的系统。

程序员诚哥 1653

MySQL之select语句的执行过程

select语句的执行过程 select * from T where ID = 10 MySQL的基本架构: MySQL可以分为以下两个部分 server层 存储引擎 存储引擎 存储引擎负责数据的存储和提取。其架构模式时插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常使用的存储引擎是InnoDB,它从MySQL5.5.5版本开始成为了默认的存储引擎。 ...

Java菜鸟的进击之路 962

mysql中select和update语句执行过程

前言 本文基于MySQL5.7版本。 前面几篇MySQL系列的文章介绍了索引,事务和锁相关知识,那么今天就让我们来看看当我们执行一条select语句和一条update语句的时候,MySQL要经过哪些步骤,才能返回我们想要的数据。 一条select语句的执行流程 MySQL从大方向来说,可以分为 Server 层和存储引擎层。而Server层包括连接器、查询缓存、解析器、预处理器、优化器、执行器等,最后Server层再通过API接口形式调用对应的存储引擎层提供的接口。如下图所示(图片来源于《高性能My

三血狼 2652

MySQL:SELECT的执行过程

SELECT查询语句的执行过程,需要弄懂两个顺序,SELECT语句编写的顺序和SELECT执行顺序

Java开发相关的学习笔记 1858

【MySQL系列】- Select查询SQL执行过程详解

如果想对MySQL进行操作,第一步建立数据库连接,这个过程就是连接器来完成的,它主要负责与客户端的通信,验证用户名和密码是否正确等。大多数的应用系统会在第一次启动的时候建立好一定数量的数据库连接池,这个就是通过连接器与数据库提前建立好连接。

记录总结工作过往 1475

MySQL中SELECT查询的执行顺序

详细解释MySQL中SELECT语句执行顺序

2401_82413779的博客 1327

MySQL SELECT 语句执行链路解析

本文详细介绍了MySQL 查询的整个流程,包括“连接器”、“解析器”、预处理器、优化器、执行器和存储引擎各个阶段的工作原理。每个模块在 SQL 查询执行过程中都扮演着至关重要的角色,共同协作确保查询的高效执行。

tatasix的博客 1579

MySQL知识汇总:讲一讲MySQL中Select语句的执行顺序

前言: 1.一句话概括MySQL数据库中的select查询语句各个子句的执行顺序 MySQL语句执行顺序:FROM > 表链接(inner join、left join、right join) > WHERE >group by 进行分组 > having过滤 > select > order by 语句排序 > 分页语句 2、详细解释为什么select查询语句是这样的一个顺序 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,

七叔的博客 2万+

mysql select 执行过程_MySQL SELECT执行顺序

SELECT语句的完整语法为:(7) SELECT(8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT 说明:语法前面的序号为SELECT执行顺序MySQL的SELECT执行顺序一共分为10步,如上所标注的那样,最先执行的是FROM操作,最后执...

weixin_39995351的博客 302

SELECT 语句的执行过程

SELECT 语句的执行过程为:连接、查询缓存、词法分析,语法分析,语义分析,构造执行树,生成执行计划、执行器执行计划,下面开始梳理一次完整的查询流程: 连接器 连接器负责与客户端建立连接,获取权限,维持和管理连接 连接命令: >mysql -uroot -p123456 -h127.0.0.1 -P3306 -A 连接的基本流程: 认证用户名+密码 -> 权限列表中查询拥有的权限 查询缓存 执行过的查询会被 MySQL 以 key-value 的形式缓存起来. key 是查询语句, va

tototototoo的博客 3104
上一篇: 【MySQL】第十部分 常用的聚合函数
下一篇: 【MySQL】第十二部分 子查询
Tree_wws
博客等级 码龄6年 1万+粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值