sql执行顺序
1.from
2.join
3.
- on
- left,right,outer…
4. where
5.group by
6. avg,sum…
7.having
8. select
9. distinct
10. order by
11. limit
每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。
大致分为三个阶段:笛卡尔积阶段-(1,2,3,4)-> 分组计算阶段(5,6,7)-> 选取展现阶段(8-11)
- 第一步:由from后进行计算,为select之后得选取展现阶段做准备
- 第二步:将两张表或者多张表根据顺序进行笛卡尔积
- 第三步:对笛卡尔积生成得虚拟表以on条件筛选。选出符合条件的实例(行)。筛选出符合条件的实例之后。根据left join 或 right join等条件特点补充符合条件实例
- 第四步:对笛卡尔积阶段最后进行条件筛选
- 第五步:对符合条件的实例进行分组
- 第六步:对分组后的数据进行聚合操作
- 第七步:可对聚合后的数据进行条件筛选
- 第八步:拿到计算后的数据,为了数据排序展现等准备数据
- 第九步:去重
- 第十步:排序
- 第十一步:选取展现的条数