✅ 请问, 7千万级表Join, 能优化到1秒以内吗?

【Doris 使用环境】 生产

【Doris 版本】1.2.4

【问题描述】

目前测试两个7千万级别的表join, 在不使用colocation的情况下, 有办法优化到1秒以内吗? 目前, 大概在4秒左右.
目前已经尝试过的方式, (1) 调整前缀索引 (2) id为key增加bloomFile索引 (3) 调整左右表顺序 (4) 调整数据均匀分布在各节点

SQL:

【操作系统】centos7

【机器配置】48核188G, 万兆网卡, SSD盘, 10个be节点

select d, dim.city, count(pus.uid)
from dws.dw_detail_table pus
left join (
select uid, city from dim_table
) dim
on pus.uid = dim.uid
where d = ‘2023-05-17’
group by d, city
;

执行计划:
通过查看query file 发现VDataStreamSender的耗时比较长:
image

Join类型:
看执行计划应该是HashJoin:

【附件】可附加 截图/监控/日志/相关 issue 等进行辅助说明

set parallel_fragment_exec_instance_num=8 尝试开启下查询并发

嗯嗯, 感谢~
测试这个参数, 大概提升了1秒中左右. 除此之外,我这边还尝试了不同的分桶, 但Doris是不是不推荐过多分桶(一个表一个分区大概有11G的数据), 这个平衡点一般, 从那几个维度评估会比较好那
3个分桶:8秒
5个分桶:6秒
10个分桶(auto): 3.5秒
16个分桶: 1.9秒
32个分桶: 1.6秒
48个分桶: 1.2秒