SQL查询语句的执行流程

2019-04-16  本文已影响0人  codeing_java

MySQL可以分为Server层和存储引擎层两部分

一条普通的查询语是怎样执行并返回结果了

mysql> select * from table_test where id=10;
一套查询SQL的执行流程图

连接器

查询缓存

大多数情况下建议不要使用查询缓存,查询缓存往往弊大于利。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

分析器

优化器

比如你执行下面这样的语句,这个语句是执行两个表的join:
mysql> select * from t1 join t2 using(ID) where t1.c=10 and t2.d=20;

执行器

mysql> select * from T where ID=10;
比如我们这个例子中的表T中,ID字段没有索引,那么执行器的执行流程是这样的:
调用InnoDB引擎接口取这个表的第一行,判断ID值是不是10,如果不是则跳过,如果是则将这行存在结果集中;
调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。
执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端

参考:MySql实战45讲

上一篇 下一篇

猜你喜欢

热点阅读