【Jdbc Catalog】外部表join不走索引

Viewed 103

在jdbc catalog对两个外部表进行join

select * from tba join tbb on tba.col1=tbb.col1 where tba.col2 =123
索引列:tba.col2,tba.col1,tbb.col1

如果在业务库运行3秒出结果,但是doris catalog运行需要30秒

观察到on 条件的tbb.col1索引条件不触发,on操作应该发生在doris执行,分别把两个表数据拉到doris后再进行join,有没办法整个sql都在业务库执行

2 Answers

join查询会把两个外部表拆分成两个 scan,从你的 SQL 来看
select * from tba join tbb on tba.col1=tbb.col1 where tba.col2 =123

select col list 为 *
过滤条件为tba.col2 =123,join 条件为 tba.col1=tbb.col1,过滤中的列和 join 条件不是同一列,所以tba.col2 =123只能针对tba 下推
即两个 scan sql 为
select * from tba where col2 =123
select * from tbb
tbb 拉取全量数据,走不了索引
所以慢是正常的
如果源表有索引且执行很快,可以使用透传查询