千家信息网

SQL执行顺序讲析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文内容主要给大家带来SQL执行顺序讲析,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。一、手写SQL顺序selec
千家信息网最后更新 2026年11月01日SQL执行顺序讲析

下文内容主要给大家带来SQL执行顺序讲析,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。

一、手写SQL顺序

select from  join  on where group by having order by limit 

二、MySql执行顺序

from on  join where group by having select distinctorder by limit 

三、MySql执行顺序理解

第一步:加载from子句的前两个表计算笛卡尔积,生成虚拟表vt1;

第二步:筛选关联表符合on表达式的数据,保留主表,生成虚拟表vt2;

第三步:如果使用的是外连接,执行on的时候,会将主表中不符合on条件的数据也加载进来,做为外部行

第四步:如果from子句中的表数量大于2,则重复第一步到第三步,直至所有的表都加载完毕,更新vt3;

第五步:执行where表达式,筛选掉不符合条件的数据生成vt4;

第六步:执行group by子句。group by 子句执行过后,会对子句组合成唯一值并且对每个唯一值只包含一行,生成vt5,。一旦执行group by,后面的所有步骤只能得到vt5中的列(group by的子句包含的列)和聚合函数。

第七步:执行聚合函数,生成vt6;

第八步:执行having表达式,筛选vt6中的数据。having是唯一一个在分组后的条件筛选,生成vt7;

第九步:从vt7中筛选列,生成vt8;

第十步:执行distinct,对vt8去重,生成vt9。其实执行过group by后就没必要再去执行distinct,因为分组后,每组只会有一条数据,并且每条数据都不相同。

第十一步:对vt9进行排序,此处返回的不是一个虚拟表,而是一个游标,记录了数据的排序顺序,此处可以使用别名;

第十二步:执行limit语句,将结果返回给客户端

四、其他

1、on和where的区别?

简单地说,当有外关联表时,on主要是针对外关联表进行筛选,主表保留,当没有关联表时,二者作用相同。

例如在左外连时,首先执行on,筛选掉外连表中不符合on表达式的数据,而where的筛选是对主表的筛选。

2、图解

对于以上关于SQL执行顺序讲析,如果大家还有更多需要了解的可以持续关注我们的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。

数据 生成 顺序 子句 表达式 关联 条件 相同 专业 函数 知识 分组 排序 更新 不同 必要 一行 下文 两个 书籍 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 互联网核心科技是什么 互联网巨头科技公司 互联网最新的科技有限公司 科技与互联网发展 安徽鑫晟辉互联网科技 小马过河互联网科技 哈尔滨新华互联网科技 新兴科技互联网创新大赛颁奖典礼 开一家科技互联网公司需要多少钱 区块链结合互联网科技 山东有哪些互联网科技公司 小米互联网科技园入驻 智帮互联网科技公司最近动向 互联网科技快讯热点 新氧科技和美国互联网有关系吗 广东鹅鹅鹅互联网科技有限公司 世界互联网科技成果奖 互联网时代高科技布局 科技和互联网行业的特点 互联网科技股 互联网科技公司税收优惠 关于新基建和互联网科技 互联网科技作文 亿账通互联网科技 互联网科技股午盘股票涨跌 科技与互联网的利与弊 须眉科技是互联网公司吗 深圳育鹏互联网科技有限公司招聘 深圳互联网科技园地址
0