Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để lưu trữ uuid dưới dạng số?

Nếu tôi hiểu chính xác, bạn đang sử dụng UUID trong cột chính của mình? Mọi người sẽ nói rằng khóa chính thông thường (số nguyên) sẽ nhanh hơn, nhưng có một cách khác là sử dụng mặt tối của MySQL. Trên thực tế, MySQL sử dụng nhị phân nhanh hơn bất kỳ thứ gì khác khi các chỉ mục được yêu cầu.

Vì UUID là 128 bit và được viết dưới dạng thập lục phân, nên rất dễ dàng để tăng tốc và lưu trữ UUID.

Đầu tiên, trong ngôn ngữ lập trình của bạn, hãy xóa dấu gạch ngang

Từ 110E8400-E29B-11D4-A716-446655440000 tới 110E8400E29B11D4A716446655440000 .

Bây giờ nó là 32 ký tự (như băm MD5, điều này cũng hoạt động với).

Kể từ một BINARY duy nhất trong MySQL có kích thước 8 bit, BINARY(16) là kích thước của một UUID (8 * 16 =128).

Bạn có thể chèn bằng:

INSERT INTO Table (FieldBin) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))

và truy vấn bằng cách sử dụng:

SELECT HEX(FieldBin) AS FieldBin FROM Table

Bây giờ bằng ngôn ngữ lập trình của bạn, hãy chèn lại các dấu gạch ngang ở các vị trí 9, 14, 19 và 24 để khớp với UUID ban đầu của bạn. Nếu các vị trí luôn khác nhau, bạn có thể lưu trữ thông tin đó trong trường thứ hai.

Ví dụ đầy đủ:

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`

Nếu bạn muốn sử dụng kỹ thuật này với bất kỳ chuỗi hex nào, hãy luôn thực hiện length / 2 cho chiều dài trường. Vì vậy, đối với sha512, trường sẽ là BINARY (64) vì mã hóa sha512 dài 128 ký tự.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách định dạng số trong MySQL

  2. 4 cách để liệt kê tất cả các chế độ xem trong MySQL

  3. Các lớp lồng nhau - CustomRowMapper !! Nó không còn là một vấn đề nữa !! - Phần 1

  4. Cách tạo bảng tổng hợp động trong MySQL

  5. Cách hiển thị các quy trình MySQL