SELECT 语句之执行顺序

image.png

解释:

首先,要先执行我,需要先连接的数据库,我会先走连接器,验证好账号密码正确后,我就可以去缓存区看是不是存在的,如果缓存里面有,那我工作量就少了,如果我有权限的话就会把结果直接给客户端。 如果缓存查不到,我就会去分析器了,在这里对我进行词法分析,如果不符合SQL的词法,就会返回错误。 通过词法验证后,接下来就会对我做语法分析,不符合要求,直接返回错误。符合要求,我被解析成语法解析树。接下来就要进入优化器了,优化器会根据自己的判断,来做决定如何优化,比如如何选择索引或者联表查询时先去查哪个表。所以,有的时候即使程序员指定了一些索引,我依然不会用,我表示我有自己的想法
图片

。 然后我带着优化方案,走向执行器,先让人看看我有没有这个权限执行,检查完事,执行器就会调用对应的引擎接口,依次的把符合条件的数据装进结果集。同时,还会把结果存到缓存中,最后把结果集返回客户端就完事了。

你可能感兴趣的:(SELECT 语句之执行顺序)