暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

推荐读 | MySQL书写顺序和执行顺序

原创 杨磊 2022-08-17
907

文章转载自如下链接,版权归原作者所有。
https://blog.51cto.com/u_15127655/4357411

正文如下:

书写顺序:
SELECT →FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY→ LIMIT

执行顺序:
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT →DISTINCT → ORDER BY→ LIMIT

SQL加载执行顺序:
1.from 加载from关键词后的表,计算笛卡尔积,生成虚拟表vt1
2.筛选关联表中满足on表达式的数据,保留主表数据,生成虚拟表vt2
join表示要关联的表,on代表连接条件
3.外连接,执行on会将主表中不符合on条件的数据也加载进来作为外部行
4.from子句涉及多张表,则重复1-3,直至所有的表都加载完毕,更新虚拟表vt3
5.执行where表达式,筛选数据生成表达式vt5
6.执行group by子句分组,分组会把子句组合成唯一值,且每个唯一值只包含一行,生成虚拟表vt5这一步开始才可以使用select中的别名,它返回的是一个游标,而不是一张表,在where中不可以使用select中的别名,而having却可以。
7.执行聚合函数,生成虚拟表vt6
8.执行having,筛选数据并生成vt7
9.执行select,筛选vt7数据并生成vt8
10.执行distinct,去重vt8并生成vt9
11.order by 排序vt9 耗费资源
12.执行limit并返回

文章结束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论