热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL高频面试题目一:一条SQL查询语句是如何执行的?

(1)客户端与数据库建立连接(2)查询缓存,如果命中缓存,则立即返回存储在缓存中的数据。(3)解析器先进行词法分析,将SQL语句打碎成一个个单词&#

 

(1)客户端与数据库建立连接

(2)查询缓存,如果命中缓存,则立即返回存储在缓存中的数据。

(3)解析器先进行词法分析,将SQL语句打碎成一个个单词,根据构词规则识别单词中的关键字和非关键字,接着进行语法解析,判断是否满足MySQL的语句,接着生成语法树。如果语法错误则返回

 

 

(4)解释器是分析语法有没有错误,但是它无法知道数据库中有没有数据表和字段,预处理器根据MySQL规则进一步检查解析树是否合法。如检查表名,列名是否正确,是否有表权限等。

(5)查询优化器对解析树进行优化,然后生成不同的执行计划,然后选择一种最优的执行计划,MySQL里边使用的是基于开销的优化器,哪种执行计划开销最小就使用哪一种。(可以用EXPLAIN来查看执行计划,其能够看出多表关联查询,先查询哪一张表?执行查询的时候用到了什么索引)

(6)执行引擎根据执行计划调用存储引擎的API完成整个查询。

 


推荐阅读
author-avatar
我俩的12月11_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有