关联表引擎
使用 JOIN操作的一种可选的数据结构。
!!! 注意 "Note" 该文档和 JOIN 语句 无关.
建表语句
建表语句详情参见创建表.
引擎参数
使用join_strictness
和 join_type
参数时不需要用引号, 例如, Join(ANY, LEFT, col1)
. 这些参数必须和进行join操作的表相匹配。否则,CH不会报错,但是可能返回错误的数据。
表用法
示例
创建左关联表:
创建 Join
右边的表:
表关联:
作为一种替换方式,可以从 Join
表获取数据,需要设置好join的key字段值。
数据查询及插入
可以使用 INSERT
语句向 Join
引擎表中添加数据。如果表是通过指定 ANY
限制参数来创建的,那么重复key的数据会被忽略。指定 ALL
限制参数时,所有行记录都会被添加进去。
不能通过 SELECT
语句直接从表中获取数据。请使用下面的方式:
- 将表放在
JOIN
的右边进行查询 - 调用 joinGet函数,就像从字典中获取数据一样来查询表。
使用限制及参数设置
创建表时,会应用下列设置参数:
Join
表不能在 GLOBAL JOIN
操作中使用
Join
表创建及 查询时,允许使用join_use_nulls参数。如果使用不同的join_use_nulls
设置,会导致表关联异常(取决于join的类型)。当使用函数 joinGet时,请在建表和查询语句中使用相同的 join_use_nulls
参数设置。
数据存储
Join
表的数据总是保存在内存中。当往表中插入行记录时,CH会将数据块保存在硬盘目录中,这样服务器重启时数据可以恢复。
如果服务器非正常重启,保存在硬盘上的数据块会丢失或被损坏。这种情况下,需要手动删除被损坏的数据文件。