临时表支持
ClickHouse 支持临时表,具有以下特性:
- 临时表会在会话结束时消失,连接断开时也同样如此。
- 未指定引擎时,临时表使用 Memory 表引擎;也可以使用除 Replicated 和
KeeperMap外的任何表引擎。 - 临时表不能指定 DB,而是在数据库之外创建。
- 无法通过分布式 DDL 查询在集群中的所有服务器上创建临时表 (即使用
ON CLUSTER) :该表仅存在于当前会话中。 - 如果临时表与另一张表同名,且查询中仅指定表名而未指定 DB,则会使用临时表。
- 在分布式查询处理中,查询中使用的 Memory 引擎临时表会传递到远程服务器。
语法
要创建临时表,请使用以下语法:
CREATE [OR REPLACE] TEMPORARY TABLE [IF NOT EXISTS] table_name
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) [ENGINE = engine]大多数情况下,临时表并非手动创建,而是在查询使用外部数据或执行分布式 (GLOBAL) IN 时创建。有关更多信息,请参阅相应章节。
也可以使用 ENGINE = Memory 的表来替代临时表。