开发者学堂课程【MySQL 高级应用 - 索引和锁:SQL 执行加载顺序】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8587
SQL 执行加载顺序
内容介绍
一、手写
二、机读
三、总结
一、 手写
SELECT DISTINCT
<select_list >
FROM
<left_table > <join_type >
JOIN< right_table >ON< oin_condition >WHERE
< where_condition >
GROUP BY
<group_by_list >
HAVING
< having_condition >
ORDERBY
< order_by_condition >
LIMIT <limit number >
手写的时候,人最关心的是 select ,想找到关心的字段的表格或字段的值。
首先 select 把它当作查询条件下边就是 form ,这个 on 就是 jion_condition ,就是两个能 jion 起来的条件 A 和 B,比如说 leftA、jionB on 比如说员工部门 ID 和部门表的组件 ID 相同。
为什么两个连在一起,那就需要一个 jion_condition ,连在一起之后去的公有部分再过滤 where、group by、having、order by、limit。
人写的就是一个逐步向下的顺序。
二、机读
FROM <left_table>
ON<join_condition>
< join_type >JOIN < right_table >
WHERE<where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number>
机读的一个顺序是先读 form,select 从第一的位置变成第七。
最终从 SQL 里面出来以后这个 select 查询出来之后排序以后,按照 limit 的限制调速推送给主人这是处理结果,对于 MySQL 来说机读的时候是先从 form 开口。
三、总结
SQL 解析后面有前后两种关系,先是笛卡尔级、on 主表保留、jion 不符合 on 也添加 、where 非聚合非 select 别名、group by 改变对表引用、havig 之作用分组后、select distinct、order by 可使用 select 别名、limit 。