LowCardinality(T)
他のデータ型の内部表現をDictionaryエンコードで変更します。
構文
LowCardinality(data_type)
パラメータ
data_type
— String, FixedString, Date, DateTime、および Decimal を除く数値。LowCardinality
は一部のデータ型には効率的でない場合があります。allow_suspicious_low_cardinality_types の設定説明を参照してください。
説明
LowCardinality
はデータの保存方法と処理ルールを変更する上位構造です。ClickHouse はLowCardinality
-カラムに Dictionary コーディング を適用します。Dictionary エンコードされたデータを操作すると、多くのアプリケーションで SELECT クエリのパフォーマンスが大幅に向上します。
LowCardinality
データ型の使用効率は、データの多様性に依存します。Dictionary に1万未満の異なる値が含まれる場合、ClickHouse は主にデータの読み取りと保存の効率が高くなります。Dictionary に10万を超える異なる値が含まれる場合、通常のデータ型を使用する方が性能が低下する可能性があります。
文字列を扱う際には、Enum の代わりに LowCardinality
の使用を検討してください。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
関数: