本文介绍如何在云数据库ClickHouse中创建物化视图。
创建物化视图
语法:
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]Materialized_name [TO[db.]name] [ON CLUSTER cluster]
ENGINE = engine_name()
ORDER BY expr
[POPULATE]
AS SELECT ...
参数说明:
参数 | 说明 |
| 数据库的名称,默认为当前选择的数据库,本文以default为例。 |
| 物化视图名。 |
| 将物化视图的数据写入到新表中。 说明 如果需要将物化视图的数据写入新表,不能使用 |
| 在每一个节点上都创建一个物化视图,固定为 |
| 表引擎类型,具体请参见表引擎。 |
|
说明 一般不推荐使用 |
|
说明
|
示例:
创建
SELECT
子句指定的源表。CREATE TABLE test ON CLUSTER default ( id Int32, name String ) ENGINE = ReplicatedMergeTree() ORDER BY (id);
写入数据至源表。
INSERT INTO test VALUES(1,'a'),(2,'b'),(3,'c');
创建基于源表的物化视图。
CREATE MATERIALIZED VIEW test_view ON CLUSTER default ENGINE = MergeTree() ORDER BY (id) AS SELECT * FROM test;
查询物化视图,验证未指定
POPULATE
关键字时,是否能查询到物化视图创建前写入源表的数据。SELECT * FROM test_view;
查询数据为空,说明未指定
POPULATE
关键字时,查询不到物化视图创建前写入源表的数据。写入数据至源表。
INSERT INTO test VALUES(4,'a'),(5,'b'),(6,'c');
查询物化视图。
SELECT * FROM test_view;
查询结果如下。
id│name ─│── 4│ a 5│ b 6│ c
参考文档
创建物化视图的更多信息,请参见Create Materialized View。