我想使用 ClickHouse 进行营销。大多数时候,他们不仅想知道有多少人使用某些功能,还想知道发送垃圾邮件的确切电子邮件。将 ClickHouse 用于此类目的是否是一个不错的选择(从表中选择 DISTINCT 电子邮件...)?“select COUNT”和“select DISTINCT”之间的性能有什么区别?
将 ClickHouse 用于此类目的是否是一个不错的选择
是的,ClickHouse 有不错的 HashTable 和 Aggregator 实现。它大量使用模板化代码进行静态类型分派,并应用了大量内存技巧。它以紧凑的形式存储数据。
我想你想比较select count
和select count(distinct)
作为select distinct
是一个不同的野兽。ClickHouse 转换count(distinct)
为聚合器uniqExact
,它比 慢 8 倍count(*)
,但仍然比 Postgres 等传统数据库快得多。还有近似聚合器uniq
,uniqCombined
并且uniqHLL12
为了更快的估计,它比 慢 1.5 倍左右count(*)
。如果您需要更多信息,请参阅https://clickhouse.yandex/docs/en/query_language/agg_functions/reference/。
如果您的目标是select distinct
,ClickHouse 仍然可以做得很好,它使用Set
数据结构来统一数据流(Set
也用于构建其 SQLin (...)
结构)。不测量数据输出过程,只比plain慢1.3倍count(*)
。
归档时间: |
|
查看次数: |
1237 次 |
最近记录: |