LowCardinality(T)
将其他数据类型的内部表示转换为字典编码。
语法
参数
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
函数: