Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menyimpan uuid sebagai nomor?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mysql mencari beberapa tabel menggunakan kata kunci

  2. MySQL:cara mendapatkan perbedaan antara dua cap waktu dalam hitungan detik

  3. Pandangan mendalam tentang Pengindeksan Basis Data

  4. MySQL bagaimana cara mengisi tanggal yang hilang dalam rentang?

  5. MySQL memuat nilai NULL dari data CSV