LowCardinality字段在ClickHouse中是一种优化,其中的值是字典编码的,用于更快的查找和更小的存储。根据文档
LowCarditality数据类型的使用效率取决于数据的多样性。如果一个字典包含的值少于10,000个不同的值,那么ClickHouse通常显示出更高的数据读取和存储效率。如果一个字典包含超过10万个不同的值,那么与使用普通数据类型相比,ClickHouse的性能可能更差。
作为布尔值的UInt8值如何?基数是2,但是由于占用的空间很小(8),它实际上会在使用它的查询中提供好处吗?
发布于 2020-06-11 15:47:34
LowCardinality主要对字符串类型有意义。
LowCardinality( UInt8 )总是比UInt8差。
在非常罕见的情况下,LowCardinality对于数字类型来说是有意义的。但我甚至不会测试它,因为它浪费时间。指向LC字典的指针在.bin文件中使用(Int8-Int 32),因此在磁盘空间和CPU中将数值本身存储在.bin文件中成本更低。
发布于 2021-12-20 21:35:48
根据https://clickhouse.com/docs/en/whats-new/changelog/#new-feature,ClickHouse现在支持原生Bool类型。它本质上是一个仅限于值0和1的UInt8,但它也将以诸如JSON等格式在true/false之间进行序列化。
https://stackoverflow.com/questions/62327940
复制相似问题