在2022-1.17该版本中,explain某些查询sql,例如

    1. EXPLAIN SELECT * FROM db1.travelrecord WHERE id = 1;

    id是分片键
    image.png
    可以看到有两个执行计划

    上面的执行计划是ColocatedPushDown.它是根据具体SQL,而非SQL模板(带?的SQL)得出需要扫描的分表,如果所需的物理表都在同一个目标,同时满足以下关系
    SQL中涉及的表满足一个分片(分表)与一个分片(分表)关联查询(使用分片条件达成)
    每个逻辑表只涉及一个分表
    逻辑表是相同目标的单表或者全局表
    那么就把整个SQL中的表名改写,直接下发到mysql中执行

    在分库分表的业务系统中,此类SQL应该占大多数,他们不需要扫描所有分表,只有一个sql就可以查询单个数据库中的分表,单表,全局表的结果.

    [MYCAT2 分片表JOIN]https://www.yuque.com/docs/share/4afc54eb-65a6-4486-8e37-31210bd57f46?#
    中的后两种情况,就是使用该优化,动态地把整个SQL下发到MySQL中执行

    该优化在1.21初始版本就存在,到2022-1.17才添加输出执行计划显示