clickhouse基础语法
物化视图
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。
参考博客
参考知乎的博客
1
2
3
4
5
6
7
|
create materialized view v_xxoo engine = Log
populate as
select * from cmdb_idc;
|
populate
关键字 : 直接把原始表的数据同步过来
不用 populate 的 话,视图表是没有数据的
1
2
3
4
5
6
7
8
9
10
|
-- 物化视图的问题,删除 表中的数据,视图数据不会删除
create materialized view IF NOT EXISTS v_year_summary
engine = MergeTree()
order by (y,m,d)
populate
as select YMD.1 as y, YMD.2 as m , YMD.3 as d from v_year_summary0;
|
触发物化视图去重
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
create
materialized view IF NOT EXISTS v_year_summary
engine = ReplacingMergeTree()
order by (y,m)
populate
as (
select ymd.1 as y ,ymd.2 as m , ymd.3 as d from (
select argMax( tuple(t.y,t.m,t.d) ,tuple(t.m,t.d)) as ymd from (
select db_archive_year y ,db_archive_month m ,db_archive_day d from `_db_archive_from_mysql_log` tb where tb.db_exec_status = 1) t
group by t.y
)
)
OPTIMIZE TABLE v_year_summary final;
|