Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać uuid jako numer?

Jeśli dobrze rozumiem, używasz identyfikatorów UUID w swojej głównej kolumnie? Ludzie powiedzą, że zwykły (całkowity) klucz podstawowy będzie szybszy, ale istnieje inny sposób wykorzystania ciemnej strony MySQL. W rzeczywistości MySQL szybciej używa plików binarnych niż cokolwiek innego, gdy wymagane są indeksy.

Ponieważ UUID ma 128 bitów i jest zapisany w systemie szesnastkowym, bardzo łatwo jest przyspieszyć i zapisać UUID.

Najpierw w swoim języku programowania usuń myślniki

Od 110E8400-E29B-11D4-A716-446655440000 do 110E8400E29B11D4A716446655440000 .

Teraz ma 32 znaki (jak hash MD5, z którym to również działa).

Ponieważ pojedynczy BINARY w MySQL ma rozmiar 8 bitów, BINARY(16) to rozmiar identyfikatora UUID (8*16 =128).

Możesz wstawić za pomocą:

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

i zapytaj używając:

SELECT HEX(FieldBin) AS FieldBin FROM Table

Teraz w swoim języku programowania wstaw ponownie myślniki w pozycjach 9, 14, 19 i 24, aby dopasować oryginalny UUID. Jeśli pozycje są zawsze różne, możesz zapisać te informacje w drugim polu.

Pełny przykład:

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`

Jeśli chcesz użyć tej techniki z dowolnym ciągiem szesnastkowym, zawsze wykonuj length / 2 dla długości pola. Więc dla sha512 pole to BINARY (64) ponieważ kodowanie sha512 ma długość 128 znaków.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić tabele w MySQL i MariaDB?

  2. MySQL ładuje wartości NULL z danych CSV

  3. Jak policzyć wszystkie wiersze przy użyciu SELECT z LIMIT w zapytaniu MySQL?

  4. BŁĄD 2006 (HY000):Serwer MySQL zniknął

  5. Wiele zliczeń z różnymi warunkami w jednym zapytaniu MySQL