Frage

Dies ist der beste Weg, ich einfiel einen MySQL GUID / UUID von UUID () in einem binären (16) erzeugt konvertieren:

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

Und dann ist es in einem binären Speichern (16)

Gibt es irgendwelche Auswirkungen es auf diese Art und Weise zu tun, die ich kenne soll?

War es hilfreich?

Lösung

Nicht viele Auswirkungen. Es wird die Abfragen etwas verlangsamen, aber Sie werden es kaum bemerken.

UNIQUEIDENTIFIER als 16-byte binary gespeichert wird intern sowieso.

Wenn Sie die binären in einen Client laden gehen und dort zu analysieren, notieren Sie die bit order, kann es andere String-Darstellung hat als die anfänglichen NEWID().

Oracle die SYS_GUID() Funktion ist für dieses Problem anfällig, es in einen String konvertieren unterschiedliche Ergebnisse auf dem Client gibt und auf dem Server.

Andere Tipps

Von MySQL 8.0 und höher Sie UUID_TO_BIN :

  

UUID_TO_BIN (string_uuid) , UUID_TO_BIN (string_uuid, swap_flag)

     

Wandelt einen String UUID in eine binäre UUID und gibt das Ergebnis. (Die IS_UUID () Funktion Beschreibung listet die zulässigen Formate Zeichenfolge UUID). Die Rückkehr binäre UUID ist ein VARBINARY (16) Wert.

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

ich würde es in eine Hash-8-Byte-Ganzzahl und speichere die ganze Zahl mit einem niedrigen Kollisionshocheffizienten Einweg-Hash-Algorithmus wie MurmurHash64A verwenden. Dies nutzt viel weniger Platz und kann auf indiziert und / oder aufgeteilt werden. Es ist ein Projekt, das Source MemCached Funktionen für mySQL ( http umfasst: // Schmiede. mysql.com/projects/project.php?id=250 ), die möglicherweise MurmurHash64A enthalten, da Memcached verwendet es, aber ich weiß es nicht. Oder schauen Sie sich diese Implementierung von FNV für mySQL: http://www.xaprb.com/blog/2008/03/09/a-very-fast-fnv-hash-function-for-mysql/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top