语法
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