首页/数据/NoSQL 速查/JOIN 与连接策略
本包目录(322 条)
MongoDB99 条Elasticsearch89 条
ClickHouse56 条
时序与列式28 条选型与架构50 条

JOIN 与连接策略

ClickHouse JOIN 支持 INNER/LEFT/RIGHT/FULL 与 ASOF、ANY 等变体:右表通常加载进内存,把小表放右边、大表放左边更省资源。

NoSQL 速查数据更新于 2026-10-12
常用类型INNER / LEFT / RIGHT / FULL / CROSS / ASOF(按最近时间匹配)
ANY 语义LEFT ANY JOIN 对右表多匹配只取一行,避免结果行数膨胀
分布式GLOBAL JOIN 先把右表汇总再分发,普通 JOIN 在每个分片本地执行

示例

示例
SELECT e.ts, e.user_id, u.name
FROM events AS e
LEFT JOIN users AS u ON e.user_id = u.id
WHERE e.ts >= today();

-- 按时间就近匹配(如取插入时刻前最后一次配置)
SELECT e.ts, e.id, c.cfg_version
FROM events AS e
ASOF LEFT JOIN configs AS c
ON e.id = c.id AND e.ts >= c.ts;
多表 JOIN 时把行数少的表按顺序放右侧;复杂查询可先用子查询把两表缩小到必要范围。

易错点

  • 跨分布式表的 JOIN 不自动保证全局语义,需要 GLOBAL 或先把数据收敛到单表
  • JOIN 右表超过内存会报错或落盘,join_algorithm 与内存设置要按数据量调整

数据来源与参考

  • ClickHouse Docs: JOIN clause
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌