MySQL执行顺序

一、mySql的执行顺序
mysql执行sql的顺序从 From 开始,以下是执行的顺序流程

1、FROM  table1 left join table2 on 将table1和table2中的数据产生笛卡尔积,生成Temp1

2、JOIN table2  所以先是确定表,再确定关联条件

3、ON table1.column = table2.columu 确定表的绑定条件 由Temp1产生中间表Temp2

4、WHERE  对中间表Temp2产生的结果进行过滤  产生中间表Temp3

5、GROUP BY 对中间表Temp3进行分组,产生中间表Temp4

6、HAVING  对分组后的记录进行聚合 产生中间表Temp5

7、SELECT  对中间表Temp5进行列筛选,产生中间表 Temp6

8、DISTINCT 对中间表 Temp6进行去重,产生中间表 Temp7

9、ORDER BY 对Temp7中的数据进行排序,产生中间表Temp8

10、LIMIT 对中间表Temp8进行分页,产生中间表Temp9
MySQL执行顺序流程
https://blog.csdn.net/csndhu/article/details/88176564
https://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765237.html
https://www.cnblogs.com/yyjie/p/7788428.html

-- 原始记录1-300,结果为1-200 301-400
-- where的执行顺序在select之前,所以会先执行 rank <=300 会把rank里面所有的记录都保留了,然后按照规则进行排序
select
    series_id,
    series_name,
    case
        when rank <= 200 then rank -- 1-200
    else rank + 100 end as rank     --   400-700
from
    dm_autocar.autocar_series_top300
where
    date = '20191031'
    and rank <= 300

条件写到里面与条件写到外面是一样:
    一:先写500,再限定条件:先从中选出500,再筛选条件
    二:写500并加限定条件:先从选出500,接着再从500中筛选条件

select
    series_id,
    series_name,
    rank_id
from
    series_top500
where
    max_price <= 260
    and series_type <> 4 
    and brand_level <> 0

https://data.bytedance.net/dorado/development/node/100109838?project=cn_105&version=-1        
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务