一、SQL的执行过程
执行SQL语句:
select * from student A where age = 18 and name = 'Gary';
步骤如下:
- 通过客户端/服务器通信协议与MySQL建立连接,并查询是否有权限
- MySQL 8.0之前检查是否开启缓存,开启了Query Cache且命中完全相同的SQL语句,则直接返回查询结果给客户端
- 由解析器进行语法解析,并生成解析树,如查询是
select
、表名student
、条件是age='18' and name = 'Gary'
。同时预处理器会根据MySQL规则进一步检查解析树是否合法,如检查要查询的数据或数据列是否存在等 - *查询优化器生成执行计划,根据索引查看是否可以优化
- 查询执行引擎执行SQL语句,根据MySQL的存储引擎类型,得到查询结果。若开启了Query Cache,则缓存,否则直接返回