低基数类型
把其它数据类型转变为字典编码类型。
语法
LowCardinality(data_type)
参数
data_type
— String, FixedString, Date, DateTime,包括数字类型,但是Decimal除外。对一些数据类型来说,LowCardinality
并不高效,详查allow_suspicious_low_cardinality_types设置描述。
描述
LowCardinality
是一种改变数据存储和数据处理方法的概念。 ClickHouse会把 LowCardinality
所在的列进行dictionary coding。对很多应用来说,处理字典编码的数据可以显著的增加SELECT查询速度。
使用 LowCarditality
数据类型的效率依赖于数据的多样性。如果一个字典包含少于10000个不同的值,那么ClickHouse可以进行更高效的数据存储和处理。反之如果字典多于10000,效率会表现的更差。
当使用字符类型的时候,可以考虑使用 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
函数: