SQL执行流程
-
执行流程
-
查询流程
1、查询缓存:Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有,
就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃了这个功能
2、解析器:在解析器中对 SQL 语句进行语法分析、语义分析
2.1、如果SQL语句正确,则会生成一个这样的语法树
3、优化器:在优化器中会确定 SQL 语句的执行路径,比如是根据 全表检索 ,还是根据 索引检索 等
3.1、在查询优化器中,可以分为 逻辑查询 优化阶段和 物理查询 优化阶段
4、执行器:截止到现在,还没有真正去读写真实的表,仅仅只是产出了一个执行计划。于是就进入了 执行器阶段
4.1、在执行之前需要判断该用户是否 具备权限 。如果没有,就会返回权限错误。如果具备权限,
就执行 SQL查询并返回结果。在 MySQL8.0 以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存