写 SQL 时我们常从 select 开始写,但 MySQL 的逻辑执行顺序并不是从 select 开始。
常见逻辑顺序
通常可以理解为:from -> where -> group by -> having -> select -> order by -> limit。
为什么这个顺序重要
很多 SQL 疑惑都和它有关。比如 where 阶段还看不到 select 里定义的别名,所以别名不能直接在 where 中使用。
逻辑顺序不等于物理执行计划
优化器会根据索引、统计信息和成本估算调整真正的执行路径,但理解逻辑顺序依然是排查 SQL 写法问题的基础。
一句话记忆
SQL 是按人类更容易写的顺序表达,数据库再按更适合处理数据的顺序执行。
正文完




