一条SQL查询语句是如何执行的?(11)
mysql> select * from T where ID=10;
ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'
如果有权限 , 就打开表继续执行 。 打开表的时候 , 执行器就会根据表的引擎定义 , 去使用这个引擎提供的接口 。
比如我们这个例子中的表 T 中 , ID 字段没有索引 , 那么执行器的执行流程是这样的:
-
调用 InnoDB 引擎接口取这个表的第一行 , 判断 ID 值是不是 10 , 如果不是则跳过 , 如果是则将这行存在结果集中;
-
调用引擎接口取“下一行” , 重复相同的判断逻辑 , 直到取到这个表的最后一行 。
-
执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端 。
至此 , 这个语句就执行完成了 。
对于有索引的表 , 执行的逻辑也差不多 。 第一次调用的是“取满足条件的第一行”这个接口 , 之后循环取“满足条件的下一行”这个接口 , 这些接口都是引擎中已经定义好的 。
推荐阅读
- Uzi|LOL近年来两大转会假新闻!一条比一条离谱好笑
- 手机游戏|DNF关服了会有什么补偿?玩家讨论出四种可能,最后一条最靠谱
- 一条小团团|瘦身成功的小团团,只打算邀女粉庆生,结果多了8个男粉
- 一条小团团|网红「一条小团团」不惧恶评!大方露脸,发布视频!自称:从未被认出过
- 梦幻西游|梦幻西游:翻出一条10级双蓝字腰带,引来土豪哄抢,价值飙升10亿
- 超激斗梦境|《超激斗梦境》人物每一条属性介绍
- 一条小团团|鱼死网破?小团团发文暗示被背锅,公会的问题和她没关系
- 一条小团团|虎牙法神带小团团开黑,振刀成功后,小团团激动:我负责捡武器
- 云顶之弈|云顶之弈:开局三龙族,是天赐还是陷阱?不要一条道走到黑!
- 打野|新版本T0刺客突然诞生,出名刀可以再获得一条命,天克百里玄策!