clickhouse group by 优化神器

本文介绍了如何优化ClickHouse中的大数据量GroupBy操作。通过将表的分片字段设置为需要GroupBy的字段A,可以实现数据在不同服务器上的分散,从而减少内存消耗和提升查询效率。在查询时,使用`settings distributed_group_by_no_merge=1`参数,强制ClickHouse只在本地分片进行GroupBy操作,避免全表合并,显著提高性能。这种方法对于处理高分散性的字段非常有效。

clickhouse group by 优化神器

clickhouse中有时候会有对大量分散数据进行group by后再筛选的需求

比如3亿条数据按照字段A进行group by,还有2亿条,再根据其他字段的count结果进行筛选:

select A,count(*) from table_t1
group by A 
having count(*)>8

因为字段A的分散性,group by 会非常耗费内存且慢

优化方法!!!

将表t1的分片字段改为A,那么表中的数据就会自动按照A值的不同分布在不同的服务器上,那么在用A进行group by 时,实际上是不需要对其他分片的数据进行操作的,本分片group by即可!!

怎么设置只对本分片进行操作呢
就是在group by 语句后面加上一句 :
settings distributed_group_by_no_merge=1

select A,count(*) from table_t1
group by A 
having count(*)>8
settings distributed_group_by_no_merge=1

效果杠杠的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值