LowCardinality(T)
将其他数据类型的内部表示更改为字典编码。
Syntax
参数
data_type
— String、FixedString、Date、DateTime 和除 Decimal 之外的数字。对某些数据类型,LowCardinality
并不高效,请参阅 allow_suspicious_low_cardinality_types 设置的说明。
描述
LowCardinality
是一种超级结构,改变了数据存储方法和数据处理规则。ClickHouse 在 LowCardinality
列上应用 字典编码。使用字典编码的数据进行操作显著提高了许多应用程序的 SELECT 查询性能。
使用 LowCardinality
数据类型的效率依赖于数据的多样性。如果字典中包含少于 10,000 个不同值,则 ClickHouse 在数据读取和存储方面通常显示出更高的效率。如果字典中包含超过 100,000 个不同值,则 ClickHouse 在使用普通数据类型时表现可能会更差。
在处理字符串时,考虑使用 LowCardinality
代替 Enum。LowCardinality
提供了更多的使用灵活性,并且通常表现出相同或更高的效率。
示例
创建一个包含 LowCardinality
列的表:
相关设置和函数
设置:
- low_cardinality_max_dictionary_size
- low_cardinality_use_single_dictionary_for_part
- low_cardinality_allow_in_native_format
- allow_suspicious_low_cardinality_types
- output_format_arrow_low_cardinality_as_dictionary
函数: