Перейти к основному содержанию
Универсальный уникальный идентификатор (UUID) — это 16-байтовое значение, используемое для идентификации записей. Подробную информацию о UUID см. в Википедии. Хотя существуют разные варианты UUID, например UUIDv4 и UUIDv7 (см. здесь), ClickHouse не проверяет, соответствуют ли вставленные UUID какому-либо конкретному варианту. Внутренне UUID рассматриваются как последовательность из 16 случайных байтов с представлением 8-4-4-4-12 на уровне SQL. Пример значения UUID:
UUID по умолчанию состоит из всех нулей. Он используется, например, когда вставляется новая запись, но значение для столбца UUID не указано:
По историческим причинам UUID сортируются по второй половине.Хотя для значений UUIDv4 это нормально, для столбцов UUIDv7, используемых в определениях первичного индекса, это может ухудшать производительность (использование в ключах сортировки или ключах партиционирования допустимо). Точнее, значения UUIDv7 состоят из временной метки в первой половине и счётчика — во второй. Поэтому сортировка UUIDv7 в разреженных индексах первичного ключа (то есть по первым значениям каждой гранулы индекса) будет выполняться по полю счётчика. Если бы UUID сортировались по первой половине (временной метке), то на этапе анализа индекса первичного ключа в начале запросов, как ожидается, отсекались бы все marks во всех частях, кроме одной. Однако при сортировке по второй половине (счётчику), как ожидается, для всех частей будет возвращаться как минимум одна mark, что приводит к лишним обращениям к диску.
Пример:
Query
Response
В качестве обходного решения UUID можно преобразовать во временную метку, извлечённую из его второй половины:
Query
Результат (при условии, что вставлены те же данные):
Response
ORDER BY (UUIDv7ToDateTime(uuid), uuid)

Генерация UUID

ClickHouse предоставляет функцию generateUUIDv4 для генерации случайных UUID версии 4.

Пример использования

Пример 1 В этом примере показано, как создать таблицу со столбцом UUID и вставить в неё значение.
Query
Response
Пример 2 В этом примере при вставке записи значение столбца UUID не указывается, то есть используется значение UUID по умолчанию:

Ограничения

Тип данных UUID поддерживает только те функции, которые поддерживаются и типом данных String (например, min, max и count). Тип данных UUID не поддерживает арифметические операции (например, abs) и агрегатные функции, такие как sum и avg.
Последнее изменение 2 июля 2026 г.