
Mysql 的执行流程
1.客户端向服务器端发送 SQL 命令 2.服务器端连接模块连接并验证 3.缓存模
块解析 SQL 为 Hash 并与缓存中 Hash 表对应。如果有结果直接返回结果,如
果没有对应继续向下执行 4.解析器解析 SQL 为解析树,如果出现错误,报 SQL
解析错误。如果正确,向下传递 解析时主要检查 SQL 中关键字,检查关键字
是否正确、SQL 中关键字顺序是否正确、引号是否对应是否正确等。
5.预处理器对解析树继续处理,处理成新的解析树。根据解析器的解析树,进
一步检查表是否存在、列是否存在、名字和别名是否有歧义等。
6.优化器根据开销自动选择最优执行计划,生成执行计划 7.执行器执行执行
计划,访问存储引擎接口 8.存储引擎访问物理文件并返回结果 9.如果开启缓
存,缓存管理器把结果放入到查询缓存中。10.返回结果给客户端
Mysql 的执行顺序
先执行 from 关键字后面的语句,明确数据的来源,它是从哪张表取来的。
接着执行 where 关键字后面的语句,对数据进行筛选。
再接着执行 group by 后面的语句,对数据进行分组分类。
然后执行 select 后面的语句,也就是对处理好的数据,具体要取哪一部分。
最后执行 order by 后面的语句,对最终的结果进行排序。
group by 和 having 区别
GROUP BY 必须得配合聚合函数来用,分组之后你可以计数(COUNT),求
和(SUM),求平均数(AVG)等。