跳转到主要内容
用于 JOIN 操作的可选预构建数据结构。
在 ClickHouse Cloud 中,如果您的服务实例创建时使用的版本早于 25.4,则需要使用 SET compatibility=25.4 将兼容性至少设置为 25.4。

创建表

请参阅 CREATE TABLE 查询的详细说明。

引擎参数

join_strictness

join_strictnessJOIN 严格度.

join_type

join_typeJOIN 类型.

键列

k1[, k2, ...] – 来自 USING 子句、用于执行 JOIN 操作的键列。 输入 join_strictnessjoin_type 参数时不要加引号,例如 Join(ANY, LEFT, col1)。它们必须与该表所用于的 JOIN 操作一致。如果参数不匹配,ClickHouse 不会抛出异常,但可能会返回错误的数据。

细节与建议

数据存储

Join 表的数据始终存储在 RAM 中。向表中插入行时,ClickHouse 会将数据块写入磁盘上的目录,以便在服务器重启后恢复这些数据。 如果服务器异常重启,磁盘上的数据块可能会丢失或损坏。在这种情况下,您可能需要手动删除包含损坏数据的文件。

选择和插入数据

你可以使用 INSERT 查询向 Join 引擎表添加数据。如果创建表时使用的是 ANY 严格度,则会忽略重复键对应的数据;如果使用 ALL 严格度,则会添加所有行。 Join 引擎表的主要用途如下:
  • 将该表放在 JOIN 子句的右侧。
  • 调用 joinGet 函数,该函数允许你像从字典中一样从表里提取数据。

删除数据

针对 Join 引擎表的 ALTER DELETE 查询是以 变更 的形式实现的。DELETE 变更会读取过滤后的数据,并覆盖内存和磁盘中的数据。

限制与设置

创建表时,将应用以下设置:

join_use_nulls

join_use_nulls

max_rows_in_join

max_rows_in_join

max_bytes_in_join

max_bytes_in_join

join_overflow_mode

join_overflow_mode

join_any_take_last_row

join_any_take_last_row

join_use_nulls

持久化

禁用 Join 和 Set 表引擎的持久化。 减少 I/O 开销。适用于追求性能且不需要持久化的场景。 可能的值:
  • 1 — 启用。
  • 0 — 禁用。
默认值:1 Join 引擎表不能用于 GLOBAL JOIN 操作。 Join 引擎允许在 CREATE TABLE 语句中指定 join_use_nulls 设置。SELECT 查询应使用相同的 join_use_nulls 值。

使用示例

创建左侧表:
创建右侧 Join 表:
连接表:
或者,您也可以从 Join 表中检索数据,并指定连接键的值:
Join 表中删除一行:
最后修改于 2026年6月19日