Syntaxe
data_type— String, FixedString, Date, DateTime et les nombres, à l’exception de Decimal.LowCardinalityn’est pas efficace avec certains types de données ; voir la description du paramètre allow_suspicious_low_cardinality_types.
Description
LowCardinality est une surcouche qui modifie la méthode de stockage des données ainsi que les règles de leur traitement. ClickHouse applique un encodage par dictionnaire aux colonnes LowCardinality. L’utilisation de données encodées par dictionnaire améliore considérablement les performances des requêtes SELECT dans de nombreux cas d’usage.
L’efficacité du type de données LowCardinality dépend de la diversité des données. Si un dictionnaire contient moins de 10 000 valeurs distinctes, ClickHouse offre généralement une meilleure efficacité de lecture et de stockage des données. Si un dictionnaire contient plus de 100 000 valeurs distinctes, ClickHouse peut être moins performant qu’avec des types de données ordinaires.
Envisagez d’utiliser LowCardinality à la place de Enum lorsque vous travaillez avec des chaînes de caractères. LowCardinality offre davantage de flexibilité et présente souvent une efficacité équivalente, voire supérieure.
Exemple
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