首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClickHouse:在作为布尔值的Uint8上使用LowCardinality字段有意义吗?

ClickHouse:在作为布尔值的Uint8上使用LowCardinality字段有意义吗?
EN

Stack Overflow用户
提问于 2020-06-11 15:30:11
回答 2查看 1.3K关注 0票数 6

LowCardinality字段在ClickHouse中是一种优化,其中的值是字典编码的,用于更快的查找和更小的存储。根据文档

LowCarditality数据类型的使用效率取决于数据的多样性。如果一个字典包含的值少于10,000个不同的值,那么ClickHouse通常显示出更高的数据读取和存储效率。如果一个字典包含超过10万个不同的值,那么与使用普通数据类型相比,ClickHouse的性能可能更差。

作为布尔值的UInt8值如何?基数是2,但是由于占用的空间很小(8),它实际上会在使用它的查询中提供好处吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-11 15:47:34

LowCardinality主要对字符串类型有意义。

LowCardinality( UInt8 )总是比UInt8差。

在非常罕见的情况下,LowCardinality对于数字类型来说是有意义的。但我甚至不会测试它,因为它浪费时间。指向LC字典的指针在.bin文件中使用(Int8-Int 32),因此在磁盘空间和CPU中将数值本身存储在.bin文件中成本更低。

票数 11
EN

Stack Overflow用户

发布于 2021-12-20 21:35:48

根据https://clickhouse.com/docs/en/whats-new/changelog/#new-feature,ClickHouse现在支持原生Bool类型。它本质上是一个仅限于值0和1的UInt8,但它也将以诸如JSON等格式在true/false之间进行序列化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62327940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档