You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClickHouse并行哈希连接是否支持RIGHT JOIN?实测存疑咨询

ClickHouse并行哈希连接是否支持RIGHT JOIN?

问题背景

我阅读了ClickHouse连接算法相关系列文章,文中表格显示**并行哈希连接(Parallel hash join)**不支持RIGHT JOIN。但在ClickHouse Cloud环境测试时未报错,且并行哈希连接性能更优,测试详情如下:

测试查询1(自动选择连接算法)

SELECT *
FROM table_a
RIGHT JOIN table_b 
ON table_a.id = table_b.id
SETTINGS join_algorithm = 'auto', max_threads = 2, max_bytes_in_join = 50000000000;
  • 执行时长:101秒
  • 内存占用:6.43 GiB

测试查询2(指定并行哈希连接)

SELECT *
FROM table_a
RIGHT JOIN table_b 
ON table_a.id = table_b.id
SETTINGS join_algorithm = 'parallel_hash', max_threads = 2, max_bytes_in_join = 50000000000;
  • 执行时长:56秒
  • 内存占用:25.63 GiB

请问:并行哈希连接是否已支持RIGHT JOIN?还是我的操作存在问题?


更新:执行计划(EXPLAIN结果翻译后)

查询1的执行计划

表达式(字段投影 + 连接后丢弃无用列)
连接(JOIN 填充右表优先)
表达式(连接操作 + 列名转换为标识符)
从MergeTree读取(table_a)
表达式(连接操作 + 列名转换为标识符)
从MergeTree读取(table_b)

查询2的执行计划

表达式(字段投影 + 连接后丢弃无用列)
连接(JOIN 填充右表优先)
表达式(连接操作 + 列名转换为标识符)
从MergeTree读取(table_a)
表达式(连接操作 + 列名转换为标识符)
从MergeTree读取(table_b)

解答

从测试结果和执行计划可以明确:当前ClickHouse Cloud版本已支持并行哈希连接处理RIGHT JOIN,你的操作不存在问题。

  1. 兼容性验证:指定parallel_hash算法后查询正常执行且性能提升,说明该算法已兼容RIGHT JOIN的逻辑。
  2. 执行计划佐证:两个查询的执行计划都包含JOIN FillRightFirst,这是ClickHouse处理RIGHT JOIN的核心标识,证明无论选择哪种连接算法,底层都正确触发了右连接的填充逻辑。
  3. 文档版本差异:你看到的旧文章可能基于早期ClickHouse版本,而ClickHouse Cloud会持续更新到最新稳定版,并行哈希连接对RIGHT JOIN的支持是后续版本新增的特性。

另外注意:并行哈希连接性能提升的代价是内存占用大幅增加(从6.43 GiB升至25.63 GiB),这是因为它会并行构建多个哈希表,实际使用时需要结合集群内存资源情况进行选择。


内容的提问来源于stack exchange,提问作者Spacez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:40:12