Passer au contenu principal
Un identifiant universellement unique (UUID) est une valeur de 16 octets utilisée pour identifier des enregistrements. Pour plus d’informations sur les UUID, consultez Wikipedia. Bien qu’il existe différentes variantes d’UUID, par exemple UUIDv4 et UUIDv7 (voir ici), ClickHouse ne vérifie pas que les UUID insérés sont conformes à une variante particulière. En interne, les UUID sont traités comme une séquence de 16 octets aléatoires, avec une représentation 8-4-4-4-12 au niveau SQL. Exemple de valeur UUID :
L’UUID par défaut est entièrement à zéro. Il est utilisé, par exemple, lorsqu’un nouvel enregistrement est inséré mais qu’aucune valeur n’est spécifiée pour une colonne UUID :
Pour des raisons historiques, les UUID sont triés selon leur seconde moitié.Si cela ne pose pas de problème pour les valeurs UUIDv4, cela peut dégrader les performances lorsque des colonnes UUIDv7 sont utilisées dans des définitions d’index primaire (leur utilisation dans des clés d’ordonnancement ou de partitionnement ne pose pas de problème). Plus précisément, les valeurs UUIDv7 se composent d’un horodatage dans la première moitié et d’un compteur dans la seconde. Le tri des UUIDv7 dans les index clairsemés de clé primaire (c.-à-d. les premières valeurs de chaque granule d’index) se fera donc sur le champ compteur. En supposant que les UUID soient triés selon leur première moitié (l’horodatage), l’étape d’analyse de l’index primaire au début des requêtes devrait permettre d’élaguer tous les marks de toutes les parts sauf une. En revanche, avec un tri selon la seconde moitié (le compteur), au moins un mark devrait être renvoyé pour toutes les parts, ce qui entraîne des accès disque inutiles.
Exemple :
Query
Response
Pour contourner ce problème, l’UUID peut être converti en horodatage extrait de la seconde moitié :
Query
Résultat (en supposant que les mêmes données ont été insérées) :
Response
ORDER BY (UUIDv7ToDateTime(uuid), uuid)

Génération d’UUIDs

ClickHouse fournit la fonction generateUUIDv4 pour générer des UUID version 4 aléatoires.

Exemple d’utilisation

Exemple 1 Cet exemple illustre la création d’une table comportant une colonne UUID, ainsi que l’insertion d’une valeur dans cette table.
Query
Response
Exemple 2 Dans cet exemple, aucune valeur de la colonne UUID n’est spécifiée lors de l’insertion de l’enregistrement, c’est-à-dire que la valeur UUID par défaut est insérée :

Restrictions

Le type de données UUID ne prend en charge que les fonctions prises en charge par le type de données String (par exemple, min, max et count). Le type de données UUID ne peut pas être utilisé avec des opérations arithmétiques (par exemple, abs) ni avec des fonctions d’agrégation, telles que sum et avg.
Dernière modification le 2 juillet 2026