一条SQL查询语句是如何执行的?( 十 )

  • 既可以先从表 t1 里面取出 c=10 的记录的 ID 值 , 再根据 ID 值关联到表 t2 , 再判断 t2 里面 d 的值是否等于 20 。

  • 也可以先从表 t2 里面取出 d=20 的记录的 ID 值 , 再根据 ID 值关联到 t1 , 再判断 t1 里面 c 的值是否等于 10 。

  • 这两种执行方法的逻辑结果是一样的 , 但是执行的效率会有不同 , 而优化器的作用就是决定选择使用哪一个方案 。

    优化器阶段完成后 , 这个语句的执行方案就确定下来了 , 然后进入执行器阶段 。 如果你还有一些疑问 , 比如优化器是怎么选择索引的 , 有没有可能选择错等等 , 没关系 , 我会在后面的文章中单独展开说明优化器的内容 。

    执行器

    MySQL 通过分析器知道了你要做什么 , 通过优化器知道了该怎么做 , 于是就进入了执行器阶段 , 开始执行语句 。

    开始执行的时候 , 要先判断一下你对这个表 T 有没有执行查询的权限 , 如果没有 , 就会返回没有权限的错误 , 如下所示 。

    推荐阅读