Saltar al contenido principal
Un identificador único universal (UUID) es un valor de 16 bytes que se utiliza para identificar registros. Para obtener información detallada sobre los UUIDs, consulte Wikipedia. Aunque existen distintas variantes de UUID, por ejemplo UUIDv4 y UUIDv7 (consulte aquí), ClickHouse no valida que los UUIDs insertados se ajusten a una variante concreta. Los UUIDs se tratan internamente como una secuencia de 16 bytes aleatorios con representación 8-4-4-4-12 en SQL. Valor de UUID de ejemplo:
El UUID predeterminado está compuesto íntegramente por ceros. Se utiliza, por ejemplo, cuando se inserta un nuevo registro pero no se especifica ningún valor para una columna UUID:
Por motivos históricos, los UUIDs se ordenan por su segunda mitad.Aunque esto no supone ningún problema para los valores UUIDv4, puede degradar el rendimiento de las columnas UUIDv7 usadas en definiciones de índice primario (su uso en claves de ordenación o claves de partición no presenta problemas). Más concretamente, los valores UUIDv7 constan de un timestamp en la primera mitad y de un contador en la segunda. Por tanto, la ordenación de UUIDv7 en índices dispersos de clave primaria (es decir, los primeros valores de cada gránulo de índice) se hará según el campo de contador. Si se asume que los UUIDs se ordenan por la primera mitad (timestamp), se espera que, en el paso de análisis del índice de clave primaria al inicio de las consultas, se descarten todos los marks salvo los de una sola parte. Sin embargo, al ordenarlos por la segunda mitad (contador), se espera que se devuelva al menos un mark para todas las partes, lo que provoca accesos innecesarios al disco.
Ejemplo:
Query
Response
Como solución alternativa, el UUID puede convertirse en una marca temporal extraída de la segunda mitad:
Query
Resultado (suponiendo que se insertan los mismos datos):
Response
ORDER BY (UUIDv7ToDateTime(uuid), uuid)

Generación de UUIDs

ClickHouse proporciona la función generateUUIDv4 para generar UUID aleatorios de la versión 4.

Ejemplo de uso

Ejemplo 1 Este ejemplo muestra cómo crear una tabla con una columna UUID e insertar un valor en la tabla.
Query
Response
Ejemplo 2 En este ejemplo, no se especifica ningún valor para la columna UUID al insertar el registro; es decir, se inserta el valor UUID predeterminado:

Restricciones

El tipo de dato UUID solo admite las funciones que también admite el tipo de dato String (por ejemplo, min, max y count). El tipo de dato UUID no es compatible con operaciones aritméticas (por ejemplo, abs) ni con funciones agregadas, como sum y avg.
Última modificación el 25 de junio de 2026