1.应用程序发现sql到服务端
当执行sql语句的时候,应用程序链接数据库服务器,然后服务器对sql进行处理
2.查询缓存
数据库服务器会先去查询是否有该sql语句的缓存,key是查询的语句,value是查询的结果,如果sql满足key的语句,就直接从缓存中拿value来返回客户端。
3.查询优化处理,生成执行计划
如果没有查询的缓存,则:
3.1 解析sql:生成解析树,验证关键字如 select,where,left,join等是否正确。
3.2 预处理:进一步检查解析树是否存在,如检查数据表,列是否存在
3.3 优化sql:决定使用哪个索引,或者在多个表相关联的时候决定表的链接顺序。接着将sql语句转成执行计划。
4.将查询结果返回客户端
数据库服务器端将查询结果返回给客户端,如果查询可以缓存,mysql也会将结果缓存
网友评论