Untuk mengonversi string UUID (36 karakter) ke format binary (16 byte) di MySQL secara efisien, Anda wajib menggunakan fungsi bawaan UNHEX(REPLACE(uuid_string, '-', '')) atau fungsi khusus modern seperti UUID_TO_BIN(). Penyimpanan UUID dalam bentuk BINARY(16) jauh lebih hemat ruang penyimpanan dan mempercepat performa indeks secara drastis dibandingkan menyimpannya sebagai VARCHAR(36).
Fungsi Utama Konversi UUID ke Binary di MySQL
MySQL menyediakan fungsi native untuk menangani konversi UUID semenjak versi 8.0.0. Berikut adalah daftar fungsi utama yang digunakan untuk mengubah string UUID menjadi biner dan sebaliknya.
| Operasi | Fungsi MySQL 8.0+ | Alternatif MySQL 5.7 Ke Bawah | Ukuran Output |
|---|---|---|---|
| String ke Binary | UUID_TO_BIN(uuid_str) |
UNHEX(REPLACE(uuid_str, '-', '')) |
16 Bytes (BINARY(16)) |
| Binary ke String | BIN_TO_UUID(bin_val) |
LOWER(INSERT(INSERT(INSERT(INSERT(HEX(bin_val),9,0,'-'),14,0,'-'),19,0,'-'),24,0,'-')) |
36 Karakter (VARCHAR) |
Contoh Implementasi Query SQL
Berikut adalah contoh penerapan sintaks konversi string UUID ke biner secara langsung di dalam operasi INSERT dan SELECT.
-- 1. Menyimpan string UUID ke dalam kolom BINARY(16) menggunakan UUID_TO_BIN()
INSERT INTO users (id, username)
VALUES (UUID_TO_BIN('d3b07384-d113-4ec2-a499-e32ada7b79a5'), 'azwinn_user');
-- 2. Mengambil data dan mengubah kembali binary ke string UUID
SELECT BIN_TO_UUID(id) AS uuid_string, username
FROM users;
-- 3. Pencarian data berdasarkan string UUID
SELECT *
FROM users
WHERE id = UUID_TO_BIN('d3b07384-d113-4ec2-a499-e32ada7b79a5');
Tips Performa & Troubleshooting Lapangan
Saat mengimplementasikan UUID biner pada sistem produksi berskala besar, perhatikan beberapa poin teknis penting berikut:
- Gunakan UUID v4 atau v7: Jika menggunakan MySQL 8.0+, pertimbangkan penggunaan
UUID_TO_BIN(uuid_str, 1)untuk mengaktifkan pengaturan urutan waktu (time-ordered swap). Hal ini mencegah fragmentasi indeks (index fragmentation) yang parah pada tabel InnoDB. - Definisi Kolom: Pastikan kolom di database didefinisikan secara tepat sebagai
BINARY(16), bukanVARBINARY(16)atau tipe data string. - Bahasa Pemrograman: Jika Anda menggunakan ORM (seperti Eloquent Laravel atau Hibernate), pastikan driver database Anda menangani mapping tipe data
BINARY(16)secara otomatis ke dalam format byte array atau string UUID standar.