如何以更优化的方式从 LowCardinality(String) 数据类型中获取所有值?

Posted

技术标签:

【中文标题】如何以更优化的方式从 LowCardinality(String) 数据类型中获取所有值?【英文标题】:how to get all values from LowCardinality(String) datatype more optimal way? 【发布时间】:2020-09-21 09:31:13 【问题描述】:

我是 clickhouse 的新手,对 clickhosue 的表现感到惊讶。

有一件事困扰着我,我有一个使用 LowCardinality(String) 类型的表。

DDL 喜欢

create table test.table1(code LowCardinality(String),xxx,xxx,xxx ) engine=MergeTree xxx

我想从表中获取所有不同的值。

这是我的选择查询

select distinct code from test.table1;

但是数据量很大,大约140亿,可能需要40s才能完成,并且处理完表中的所有行,

所以我想知道是否有任何方法可以从 LowCardinality 数据类型中获取数据?

【问题讨论】:

【参考方案1】:

试试这个查询:

select code /*, count() */
from test.table1
group by code

【讨论】:

它工作!我的选择查询需要 40 秒。你的只有 10 秒。谢谢

以上是关于如何以更优化的方式从 LowCardinality(String) 数据类型中获取所有值?的主要内容,如果未能解决你的问题,请参考以下文章

在 ClickHouse 中使用 Array(Tuple(LowCardinality(String), Int32))

由于 LowCardinality 设置,Clickhouse 服务器无法重新启动

如何以更简洁的方式为 discord.py 编写嵌入代码?

MySQL:优化查询

如何构建我的类以更轻松地进行单元测试?

MySQL查询执行