• MySQL的执行器是怎么工作的


    作为优化器后的真正执行语句的层,执行器有三种方式和存储引擎(一般是innoDB)交互

    • 主键索引查询
      查询的条件用到了主键,这个是全表唯一的,优化器会选择const类型来查询,然后while循环去根据主键索引的B+树结构一条一条的查询是否符合条件,符合就发给客户端,不符合就跳过该条记录。(是一条一条的发送回server层的,只不过server要等到全部查询结束才会返还用户)。第一次查询会调用read_first_record来查询,后续while循环调用read_record继续查询
    • 全表扫描
      没有任何索引能用,那么优化器会选ALL类型的查询,同理,read_first_record,然后while调用read_record一条一条查询是否符合条件,符合就发回server层,反之跳过继续查询
    • 索引下推
      能够减少回表次数,提升查询效率,因为其将server层负责的事情下推到存储引擎层来处理了(尽管仍然没法完全发挥联合索引的功效),下面这个定位到age>20后:1、正常来讲要在二级索引B+树定位到age>20的第一条记录后,根据主键id去回表,将完整一行记录返回server层,然后在server层判断reward是否>100000,成立则发回客户端,否则跳过记录让存储引擎继续查;2、但是现在有索引下推了,在定位到第一条记录后,直接让存储引擎判断reward>100000不,成立的话回表然后发送数据给server层,否则直接跳过。优化器会采取Using index condition类型,代表使用了索引下推。
      在这里插入图片描述
  • 相关阅读:
    微信小程序接入lottie动画
    springcloud入门
    离子液体 [C6MIm]BF4/cas:244193-50-8/1-己基-3-甲基咪唑四氟硼酸盐黄色液体
    Windows VSCode 安装C++ 一定可以的 详细版
    flex弹性盒
    前端面试题汇总(vue+html基础)新最最全
    Git相关知识(1)
    MKcms漏洞合集
    【C++修理之路】内存管理
    统计信号处理基础 习题解答6-10
  • 原文地址:https://blog.csdn.net/pige666/article/details/134445391