mysql查询语句的执行流程

这篇博客详细解析了MySQL查询语句的执行过程,从连接器、分析器、优化器到执行器,每个步骤都有清晰的解释。当执行`selct*fromTwhereid=10;`时,如果没有id索引,会逐行检查直到找到匹配的记录;如果有索引,则利用索引优化查询。博客还提到了权限检查和连接管理等关键环节。
摘要由CSDN通过智能技术生成

Mysql整理记录Day1

假设现在有一张简单的表,只有id一个字段,执行以下语句:

selct * from T where id=10;

现在我们来探索下,这条语句的执行都经历了哪些步骤
在这里插入图片描述 mysql逻辑架构图

连接器

mysql -h$ip -P$port -uroot -p123456

第一步连接数据库,连接器负责跟客户端建立连接、获取权限、管理连接。其中:mysql是客户端工具,用来和服务端建立连接。连接需要Tcp三次握手,握手成功后,连接器开始验证身份。如果通过验证,连接器回到权限表中查询你拥有的权限。

分析器

连接成功后,mysql需要分析语句,知道你要执行什么操作。

优化器

在表里有多个索引的时候,决定使用哪个索引;或者再多表关联(join)的时候确定表的连接顺序。

执行器

开始执行前,会先判断你是否有权限执行该语句,没有会返回没有权限错误;如果有权限,调用引擎接口执行。

执行流程

id没有索引:

  1. 调用InnoDB引擎接口,取到表T的第一行,判断id是否等于10,如果不是则跳过,如果是将该行记录加入到结果集。
  2. 取下一行,重复判断,直到取到最后一行
  3. 返回结果集,执行结束

如果id上有索引,执行逻辑大同小异,第一次调用“取满足条件的第一行”,之后循环取“满足条件的下一行”这个接口,这些接口都是引擎定义好的。

笔记参考于极客时间《MySQL实战45讲》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值