SQL执行顺序讲析
admin
2023-04-19 01:42:58
0

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

一、手写SQL顺序

select 
from 
 join  on 
where 
group by 
having 
order by 
limit 

二、MySql执行顺序

SQL执行顺序讲析

from 
on 
 join 
where 
group by 

having 
select 
distinct
order 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执行顺序讲析

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

 

相关内容

热门资讯

玩家攻略科普“青松游戏辅助器?... 有 亲,根据资深记者爆料青松游戏是可以开挂的,确实有挂(咨询软件无需打开...
玩家攻略科普“闽游麻将拼多多辅... 您好:闽游麻将拼多多这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这...
重磅消息“新超圣炸/金/花怎么... 重磅消息“新超圣炸/金/花怎么开挂?”(太坑了果然有挂)您好,新超圣炸/金/花这个游戏其实有挂的,确...
终于了解“精品乐清麻将究竟有挂... 终于了解“精品乐清麻将究竟有挂吗?”(透视曝光猫腻)您好,精品乐清麻将这个游戏其实有挂的,确实是有挂...
玩家攻略科普“皇豪众娱真的有挂... 您好:皇豪众娱这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
今日重磅消息“道游联盟炸/金/... 您好:道游联盟炸/金/花这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家...
河南省2025年度1518名“... 【大河财立方消息】12月29日,中共河南省委组织部、河南省科学技术厅、河南省教育厅联合发布通知称,经...
玩家攻略科普“hhpoker开... 网上科普关于“hhpoker有没有挂”话题很是火热,小编也是针对hhpoker作*弊开挂的方法以及开...
AI“造富”5000亿美元后,... 【环球时报综合报道】英国《金融时报》26日报道称,综合梳理多个全球财富统计平台的数据发现,过去一年来...
玩家分享攻略“成就联盟到底有挂... 有 亲,根据资深记者爆料成就联盟是可以开挂的,确实有挂(咨询软件无需打开...