LowCardinality(T)
更改其他数据类型的内部表示,使其成为字典编码。
语法
LowCardinality(data_type)
参数
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
列的表
CREATE TABLE lc_t
(
`id` UInt16,
`strings` LowCardinality(String)
)
ENGINE = MergeTree()
ORDER BY id
相关设置和函数
设置
- 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
函数