8.8Kпросмотров
80.6%от подписчиков
7 августа 2025 г.
📷 ФотоScore: 9.6K
UUID() и UUID_SHORT() — генерируем уникальный ID без сервера приложений 🎲 ❗Зачем знать 🔹Иногда нужно создать уникальный первичный ключ на стороне БД, а не приложения. 1️⃣ UUID() — стандартный 128-битный идентификатор SELECT UUID(); -- '550e8400-e29b-41d4-a716-446655440000' 🔹36 символов (32 шестн. + 4 дефисa).
🔹Практически нулевая вероятность коллизии.
🔹Минусы: длинная строка → индекс ~4× крупнее, хуже кэшируется. 2️⃣ UUID_SHORT() — компактный 64-битный вариант SELECT UUID_SHORT(); -- 281474976710661 🔹Возвращает BIGINT UNSIGNED (до 18 цифр).
🔹Формируется как: (server_id << 48) + (unix_ts << 24) + increment.
🔹Удобен для числовых PK 👉 индекс меньше, быстрее сортировка.
🔹Риск коллизии есть при одинаковом server_id (на реплике проверьте server_id!). 3️⃣ Практический пример: таблица заказов CREATE TABLE orders ( id CHAR(36) DEFAULT (UUID()) PRIMARY KEY, user_id INT, total DECIMAL(10,2)
); ✅ Итог
🔹UUID() — гарантированная уникальность, но тяжёлый индекс.
🔹UUID_SHORT() — компактный числовой ID, если контролируете server_id.
🔹Оба способа позволяют генерировать ключ прямо в MySQL без внешнего сервиса или кода приложения.