MySQL Select 语句执行顺序
一条 SQL 查询语句结构如下:
SELECT
DISTINCT <select_list>
FROM <left_table> <join_type> JOIN <right_table> ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
但真正的执行步骤如下,执行时,每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入:
1. FROM
在这一步,无论后面跟那种联接运算(LEFT JOIN、RIGHT JOIN等),都首先执行交叉联接(CROSS JOIN),计算笛卡尔积,生成虚拟表 VT-1
2. ON
根据 ON 的筛选条件对 VT-1 进行筛选,生成 VT-2
3. JOIN
如果指定了OUTER JOIN(如 LEFT JOIN、RIGHT JOIN),将上一步没有匹配的行添加到 VT-2,生成 VT-3。例如 LEFT JOIN 会将左表的剩余数据添加到 VT-2 中
如果 FROM 子句包含两个以上表,则这一步最后生成的虚表 VT-3 和 FROM 子句的下一个表重复依次执行前述三个步骤,直到处理完所有的表为止
4. WHERE
根据条件对 VT-3 进行筛选,条件成立的行插入 VT-4
5. GROUP BY
按照指定的列名对 VT-4 的行进行分组,生成VT-5,最后每个分组只有一行
6. HAVING
使用聚合函数对 VT-5 的分组进行筛选,生成 VT-6
7. SELECT
投影获取指定的列,如有表达式则计算,生成 VT-7
8. DISTINCT
数据除重,生成 VT-8
9. ORDER BY
根据 ORDER BY 子句中指定的列排序,生成 VT-9
10. LIMIT
取出指定行的记录,产生 VT-10,并返回给查询用户
MySQL Select 语句执行顺序的更多相关文章
- mysql select语句执行顺序
SELECT语句定义 一个完成的SELECT语句包含可选的几个子句. SELECT语句的定义如下: <SELECT clause> [<FROM clause&g ...
- MySQL的语句执行顺序
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入 ...
- 关于sql和MySQL的语句执行顺序(必看!!!)
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及My ...
- 关于sql和MySQL的语句执行顺序
sql和mysql执行顺序,发现内部机制是一样的.最大区别是在别名的引用上. 一.sql执行顺序 (1) from (3) join (2) on (4) where (5) group by(开始使 ...
- mysql优化必知(mysql的语句执行顺序)
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入 ...
- (转)关于sql和MySQL的语句执行顺序(必看!!!)
原文:https://blog.csdn.net/u014044812/article/details/51004754 https://blog.csdn.net/j080624/article/d ...
- MySQL(五)SELECT语句执行顺序
上一篇讲述了Oracle的SELECT语法的执行顺序,这篇讲述MySQL的SELECT语法的执行顺序.MySQL的SELECT语法的执行顺序和Oracle的基本相同,只是增加了MySQL独有的LIMI ...
- MySQL SQL语句执行顺序
MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来 ...
- SQL之SELECT语句执行顺序及子句功能
1.select 语句的执行顺序 SELECT a.id,a.`product_name`,a.`agreement_copies` i,b.id as statusId from `opmp_pro ...
- Oracle(二)SELECT语句执行顺序
转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一.样例 二.SELECT语句的处理过程 1. FROM阶段 2. WHE ...
随机推荐
- 历时三年,写的一本数据结构与算法pdf,开源了!
前言 大家好,我是bigsai,很早就在写博客,将文章整理成了一个pdf,并且开源到github上! 自己写东西断断续续也不少时间了,也写了不少东西(虽然是偏向小白),这个其实花费的时间还是比较多的, ...
- 聊聊分布式 SQL 数据库Doris(七)
LSM-Tree Doris的存储结构是类似LSM-Tree设计的,因此很多方面都是通用的,先阅读了解LSM相关的知识,再看Doris的底层存储与读取流程会清晰透彻很多,如下是几个关键的设计: SST ...
- 【python】无法安装pip,报错ImportError: No module named 'pip'解决方案
命令提示符输入以下代码即可 python -m ensurepip
- MySQL8.0 安装教程
一.下载 1.官网地址 MySQL :: Download MySQL Community Server 2.选择安装包安装方式 3.选择安装版本 4.开始下载 5.下载成功 二.安装 1.双击安装包 ...
- 使用CompletableFuture实现多个异步任务并行完成后合并结果
业务场景 需要同时从多个副本数据库中查询数据,并对查询结果进行合并去重处理后返回前端. 实现过程涉及多数据源切换,这里不作过多讨论. 编码实现 实现过程: 1.定义异步查询数据方法: 2.通过Comp ...
- TIOBE 12月榜单: C# 即将成为2023 年度编程语言
TIOBE 公布了 2023 年 12 月的编程语言排行榜. 2022年C# 在挑战成为年度编程语言,但在最后一刻,C++出人意料地夺得了冠军.今年,我们确信 C# 将获胜成为2023年度编程语言.它 ...
- DC静态时序分析之时钟篇
DC静态时序分析之时钟篇博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢! 引言介绍在芯片设计或者FPGA设计里面,根据有无时钟,将电路设计分为时序逻辑电 ...
- 文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题
九.用go语言,设 T 是一棵二叉搜索树,其关键字互不相同;设 x 是一个叶结点,y 为其父结点.证明: y.key 或者是 T 树中大于 x.key 的最小关键字,或者是 T 树中小于 x.key ...
- [ABC299F] Square Subsequence
Problem Statement You are given a string $S$ consisting of lowercase English letters. Print the numb ...
- UMP系统功能
1.容灾: 主库发生故障,执行从库 主从切换: 主库恢复:(切换过程中有短暂的不可用) 2.读写分离 3.分库分表: 当采用分库分表时,系统处理用户查询的过程如下: 4.资源管理: 具体的MySQL实 ...