阅读(117) (13)

Mycat2 Join下推

2021-09-09 15:13:59 更新

只涉及单表与单表之间的join,只要它们的存储节点相同,就可以下推

涉及任意表与全局表之间的left/inner join都可以下推

涉及分片表之间的分片算法的数据分布相同同时使用拆分键进行等值查询就可以下推

值得注意的是,上述说的表并非指a join b on a.id = b.idab只能是逻辑表,而是可以使用多次运算得出的临时表

FULL JOIN都不支持下推.Mysql没有这个运算,不讨论FULL JOIN

所有是指INNER,LEFT,RIGHT,SEMI,ANTI

左表 右表 JOIN类型 额外下推条件
单表 单表 所有 targetName相同
单表 全局表 所有
单表 分片表 不支持
全局表 单表 所有
全局表 分片表 INNER,RIGHT push_down_join_broadcast可以强制下推
全局表 全局表 所有
分片表 全局表 INNER,LEFT,SEMI,ANTI(不支持RIGHT) push_down_join_broadcast可以强制下推
分片表 单表 不支持
分片表 分片表 所有 ER关系,分片键等值查询

以上规则适用于能被重写为全局索引表分片表

以上规则适用于能被重写为join的子查询,无法下推的join运算,mycat会进行运算得出正确的结果