SQL 把 SELECT 写在最前面,数据却不是照着代码从上往下走。这里得分清两层顺序。 先看一条普通查询的逻辑:FROM / JOIN 确定数据来源和连接… · @BaiBtw · TwKit
@BaiBtw
SQL 把 SELECT 写在最前面,数据却不是照着代码从上往下走。这里得分清两层顺序。 先看一条普通查询的逻辑:FROM / JOIN 确定数据来源和连接,WHERE 筛行,GROUP BY 分组,HAVING 筛组,SELECT 形成输出列,再由 ORDER BY 排序、LIMIT 限制返回数量。例如,用 t1.column_a = t2.column_a 连接两张表。WHERE 的条件作用在分组前的行上,HAVING 则作用在分组后的结果上。看起来都是“过滤”,动手的阶段不同,不能随便互换。 数据库真正接到 SQL 后,还有另一套流程:先解析并检查语句,再转成内部表示,比如关系代数;随后优化,结合索引信息生成执行计划,最后跑计划、返回结果。 所以,逻辑顺序解释的是结果怎么定义,不是承诺引擎机械地逐步搬完每张中间表。实际怎么跑,还涉及索引与缓存、表连接次序、并发控制和事务管理。上面这条简化流程也没覆盖所有 SQL 特性。把它当普通查询的逻辑骨架就行,别直接当成所有数据库的物理执行计划。
曝光 23 · 评论 0 · 点赞 0 · 书签 0
查看原帖