MySql逻辑语句的执行顺序
执行顺序
- (7) SELECT
- (8) DISTINCT <select_list>
- (1) FROM <left_table> // 这里FROM不止处理后面这一张,包括JOIN 中的,一起处理,笛卡尔积。
- (3) <join_type> JOIN <right_table> // 这里指的是根据JOIN的方式,确定保留的内容。
- (2) ON <join_condition> // 先ON 再 JOIN逻辑。
- (4) WHERE <where_condition> // 先WHERE条件过滤、再GROUP BY分组、再HAVING过滤、再DISTINCT排重、再ORDER BY排序、最后LIMIT。
- (5) GROUP BY <group_by_list>
- (6) HAVING <having_condition>
- (9) ORDER BY <order_by_condition>
- (10) LIMIT <limit_number>
- 连接器:认证、授权
- 查询缓存(8.0移除)
- 分析器:词法分析、语法分析
- 优化器:连接优化、索引选取
- 执行器:访问权限、引擎API调用