clickhouse 通过 SummingMergeTree 优化查询

背景:通过 clickhouse 统计 pv

现有一张表

create table click_event(    id String comment '点击ID',    cid UInt64 comment '用户ID',    created_time DateTime comment '点击时间') ENGINE = MergeTreeorder by id;

该表为 click_event ,用户每点击一次,向该表写入一条数据。

写入测试数据

insert into click_event values('1', 1, '2021-06-22 12:12:12'),('2', 1, '2021-06-23 12:12:12'),('3', 1, '2021-06-23 13:12:12');

统计 PV 写法

select  toYYYYMMDD(created_time), count() from click_event group by toYYYYMMDD(created_time);

以上写法需要在原表上 group by,虽然 ck 查询性能彪悍,但是仍然有性能损耗。

现用 ck 提供的 SummingMergeTree 优化以上的统计查询:

创建视图:

create materialized view view_click_event engine = SummingMergeTree(value)order by day1 populate as select toYYYYMMDD(created_time) as day1, toInt64(1) as value from click_event;

此时:

select * from view_click_event;

复制代码

就是聚合以后过的结果,原表每 insert 一条数据,view_click_event 也会新增一条(此时注意 MergeTree 合并过程)

正确应该是:

select day1,sum(value) from view_click_event group by day1;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值