Jika saya mengerti dengan benar, Anda menggunakan UUID di kolom utama Anda? Orang akan mengatakan bahwa kunci utama biasa (bilangan bulat) akan lebih cepat, tetapi ada cara lain menggunakan sisi gelap MySQL. Faktanya, MySQL lebih cepat menggunakan biner daripada yang lain ketika indeks diperlukan.
Karena UUID adalah 128 bit dan ditulis sebagai heksadesimal, sangat mudah untuk mempercepat dan menyimpan UUID.
Pertama, dalam bahasa pemrograman Anda, hapus tanda hubung
Dari 110E8400-E29B-11D4-A716-446655440000
ke 110E8400E29B11D4A716446655440000
.
Sekarang menjadi 32 karakter (seperti hash MD5, yang juga berfungsi dengan ini).
Sejak satu BINARY
di MySQL berukuran 8 bit, BINARY(16)
adalah ukuran UUID (8*16 =128).
Anda dapat menyisipkan menggunakan:
INSERT INTO Table (FieldBin) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
dan kueri menggunakan:
SELECT HEX(FieldBin) AS FieldBin FROM Table
Sekarang dalam bahasa pemrograman Anda, masukkan kembali tanda hubung di posisi 9, 14, 19 dan 24 agar sesuai dengan UUID asli Anda. Jika posisinya selalu berbeda, Anda dapat menyimpan info tersebut di kolom kedua.
Contoh lengkap :
CREATE TABLE `test_table` (
`field_binary` BINARY( 16 ) NULL ,
PRIMARY KEY ( `field_binary` )
) ENGINE = INNODB ;
INSERT INTO `test_table` (
`field_binary`
)
VALUES (
UNHEX( '110E8400E29B11D4A716446655440000' )
);
SELECT HEX(field_binary) AS field_binary FROM `test_table`
Jika Anda ingin menggunakan teknik ini dengan string hex apa pun, selalu lakukan length / 2
untuk panjang lapangan. Jadi untuk sha512, bidangnya adalah BINARY (64)
karena pengkodean sha512 memiliki panjang 128 karakter.