| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL学习-一条SQL语句的查询过程 -> 正文阅读 |
|
[大数据]MySQL学习-一条SQL语句的查询过程 |
前言mysql主要分为服务层和存储引擎层,这个分层跟MVC有点类似; 而一条查询语句的执行过程,就是先在服务层做处理:连接器、分析器、优化器、执行器; 然后再调用引擎接口去存储引擎层拿数据; 下面我们就从一条简单的查询语句来介绍下上面的各个步骤:
目录
正文1. 连接器在执行一条查询语句之前,首要条件就是建立客户端和服务端之间的连接; 这里我们用命令行的方式来建立连接:
这样我们就建立了客户端和服务器之间的连接; 关于连接又分为短连接和长连接:
因为建立连接的过程是复杂的,需要消耗很多资源,所以推荐用长连接; 但是长连接这里也有几个点,需要我们注意一下:
不过万事都有解决的办法:
2. 分析器等到上面的连接建立完成,就该执行分析器了;
分析器的作用就是分析这条语句的目的是什么; 分析器主要分为词法分析和语法分析;
3. 优化器优化器的作用显而易见,就是负责优化SQL语句的; 优化器的功能主要体现在两个方面:
关于多表联合查询,我们可以看个简单的例子,比如:
如果不优化,那么默认会先去查询t1.c=10,再去查询t2.d=20; 可是如果满足t1.c=10的结果很多,而满足t2.d=20的结果很少,那么这个默认的查询就会很慢; 此时如果有优化器的存在,他就会自动调整连接的顺序,先查询t2.d=20,再去查询t1.c=10; 优化完之后,就会进行到下一步,执行器 4. 执行器执行器在执行语句之前,会先进行权限检查,即该用户对该表有没有select权限(或者其他权限)
因为有些时候,SQL语句要操作的表并不只是SQL字面上的那些; 比如如果有个触发器,要在执行器阶段才能确定。前面的阶段是无能为力的。 下面我们还是以开头的那个查询语句为例:
权限检查通过后,会去判断条件id是不是索引:
至此一条SQL语句的查询过程就算完了。 总结一条SQL的语句的查询过程主要分4个步骤:建立连接、分析语句、优化语句、执行查询 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:29:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |