tidb多表查询的疑问

image
distSQL负责执行复杂查询,官方课程说多表查询由于数据不完整需要把对应各个表数据加载至内存才能查询,我觉得不是吧,单表查询也会发生表数据散落在各个tikv的情况,既然单表查询可以实现算子下推,为什么多表查询就不能,无非是转化的简单查询比较多而已吧

多表关联的时候也有可能算子下推的,这个应该看条件是否满足,到tikv层过滤部分数据,只不过jion的时候会到tidb进行join。你写两个join然后看看执行计划就可以看到了。

1 个赞

多表关联不能把join下推到tikv执行,但是可以直接把多表对应的单表的条件下推到tikv,以减少tikv向tidb server发送数据的网络流量和tidb server的内存使用。

2 个赞

好的谢谢

李总之前是用高斯的吧 :smile:

jion在tidb中很吃内存,内存不够用oom

此话怎讲 :smirk:

哦了 谢谢大佬

左右 join连接 一般建议小表驱动大表的优化建议,在tidb也是生效的吧?

是生效的,内部优化器会选择合适的驱动表(先build后probe)进行join
具体可以看看:https://docs.pingcap.com/zh/tidb/stable/explain-joins#hash-join

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。