Mysql学习:一条SQL查询语句是如何执行的?

待执行语句 :

mysql> select * from T where ID=10;

比如我们这个例子中的表T中, ID字段没有索引, 那么执行器的执行流程是这样的:

  • 1.调用InnoDB引擎接口取这个表的第一行, 判断ID值是不是10, 如果不是则跳过, 如果是则将这行存在结果集中;
  • 2.调用引擎接口取“下一行”, 重复相同的判断逻辑, 直到取到这个表的最后一行。
  • 3.执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。

对于有索引的表, 执行的逻辑也差不多。 第一次调用的是“取满足条件的第一行”这个接口, 之后循环取“满足条件的下一行”这个接口, 这些接口都是引擎中已经定义好的。


TODO :
带索引的表和不带索引的表,查询接口是不一样的吗?这个还要再查一查。待补充吧。

内容来源:mysql45讲

你可能感兴趣的:(Mysql学习:一条SQL查询语句是如何执行的?)