Domanda

Questo è il modo migliore che potrei fornire convertire un MySQL GUID / UUID generato da UUID () per un binario (16):

UNHEX(REPLACE(UUID(),'-',''))

E poi riporlo in un BINARIO (16)

Ci sono implicazioni di farlo in questo modo che dovrei sapere di?

È stato utile?

Soluzione

Non molte implicazioni. Si rallenta le query un po ', ma sarà difficile accorgersene.

UNIQUEIDENTIFIER viene memorizzato come 16-byte binary internamente in ogni caso.

Se avete intenzione di caricare il file binario in un client e analizzare lì, prendere nota del bit order, può avere altra rappresentazione di stringa del NEWID() iniziale.

funzione Oracle di SYS_GUID() è incline a questo problema, la conversione di una stringa dà risultati diversi sul client e sul server.

Altri suggerimenti

Da MySQL 8.0 e superiori è possibile utilizzare UUID_TO_BIN :

  

UUID_TO_BIN (string_uuid) , UUID_TO_BIN (string_uuid, swap_flag)

     

Converte un UUID stringa in un UUID binario e restituisce il risultato. (La descrizione della funzione IS_UUID () elenca i formati di stringa UUID consentiti.) L'UUID binario di ritorno è un valore VARBINARY (16).

CREATE TABLE t (id binary(16) PRIMARY KEY);

INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));
INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));
INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));

SELECT *, BIN_TO_UUID(id) FROM t;

DB-Fiddle.com Demo

Vorrei hash in un numero intero a 8 byte e memorizzare il numero intero utilizzando un algoritmo di hash unidirezionale a basso collisione ad alta efficienza come MurmurHash64A. Questo utilizza molto meno spazio e può essere indicizzato e / o partizionato su. C'è un progetto SourceForge che include funzioni Memcached for MySQL ( http: // forgia. mysql.com/projects/project.php?id=250 ) che potrebbe includere MurmurHash64A, dal momento Memcached lo usa, ma non so. O guardare questa implementazione di FNV per MySQL: http://www.xaprb.com/blog/2008/03/09/a-very-fast-fnv-hash-function-for-mysql/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top