SQL语句中的执行顺序

这也是一篇不完全的翻译,有兴趣的读者可以查看原文

下面的SQL语句的执行顺序只是逻辑上的顺序,在实际中优化器会选择最省时省力的顺序:

  1. FROM:这个只需要说一点的是JOIN这一步包含在FROM里面,总之就是先确定表,加载所有表的所有行
  2. WHERE:过滤掉不需要的行
  3. GROUP BY:根据表达式或者列名来聚合(分组),分组完成后,所有的列只剩下了作为组名的列,组内部只对聚合函数可见。
  4. 聚合函数:聚合函数相当于可以进入分组的内部,然后计算出一个只有一个值的结果,例如组内的最大最小平均总和。
  5. HAVING:过滤掉聚合后的不需要的行
  6. 窗口函数:在此时的所有行开窗口,并在窗口内执行窗口函数
  7. SELECT:选择需要的列,也叫project,投射
  8. DISTINCT:在选择的列里面进行(xing)行(hang)去重
  9. UNION,INTERSECT,EXCEPT:对得到的结果进行集合操作
  10. ORDEY BY:对进行完集合操作后得到的结果集排序
  11. OFFECT:没见过,不知道是干嘛的,别人说“Don’t use offset”
  12. LIMIT,FETCH,TOP:最后选择前几行作为最终的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值