Question

Ceci est la meilleure façon que je pouvais venir avec pour convertir un GUID MySQL / UUID généré par UUID () à un binaire (16):

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

Et puis les stocker dans un BINARY (16)

Y a-t-il des implications de ce faire de cette façon que je sache de?

Était-ce utile?

La solution

Peu de conséquences. Il va ralentir les requêtes un peu, mais vous remarquerez à peine.

UNIQUEIDENTIFIER est stocké sous forme 16-byte binary interne de toute façon.

Si vous allez charger le binaire en un client et d'analyser là, notez le bit order, il peut avoir une autre représentation de chaîne que la NEWID() initiale.

La fonction Oracle de SYS_GUID() est sujette à ce problème, en le convertissant en une chaîne donne des résultats différents sur le client et sur le serveur.

Autres conseils

De MySQL 8.0 et au-dessus, vous pouvez utiliser UUID_TO_BIN :

  

UUID_TO_BIN (string_uuid) , UUID_TO_BIN (string_uuid, swap_flag)

     

Convertit un UUID de chaîne à un UUID binaire et renvoie le résultat. (La description de la fonction IS_UUID () donne la liste des chaînes autorisées formats UUID.) Le retour UUID binaire est une valeur 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 Démo

Je hachage en un nombre entier de 8 octets et de stocker le nombre entier en utilisant un filtre passe-collision à haute efficacité à sens unique algorithme de hachage comme MurmurHash64A. Il utilise beaucoup moins d'espace et peut être indexé et / ou cloisonnés. Il y a un projet SourceForge qui inclut des fonctions Memcached pour mySQL ( http: // forge. mysql.com/projects/project.php?id=250 ) qui pourrait inclure MurmurHash64A, puisque Memcached utilise, mais je ne sais pas. Ou regardez cette mise en œuvre de FNV pour mySQL: http://www.xaprb.com/blog/2008/03/09/a-very-fast-fnv-hash-function-for-mysql/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top