Der beste Weg, um große (UUID) als MySQL-Tabelle Primärschlüssel zu behandeln

8

Ich habe eine UUID-Zeichenfolge, die ich als Primärschlüssel für MySQL-Tabellen verwenden möchte, die UUID ist eine hexadezimale Zeichenfolge mit 32 Zeichen (nachdem die Zeichen "-" entfernt wurden). Aufgrund der Tatsache, dass es besser ist, eine numerische Spalte (int) als Primärschlüssel in einer Datenbank zu verwenden, möchte ich dies in eine Ganzzahl umwandeln, bin mir aber nicht sicher, wie ich damit umgehen soll.

  1. Muss ich aufgrund der Größe der Zeichenfolge (dh. uuid = 'a822ff2bff02461db45ddcd10a2de0c2') diese in mehrere 'Teilzeichenfolgen' zerlegen.
  2. Ich verwende momentan PHP auf einer 32-Bit-Architektur, so dass die Konvertierung in PHP aufgrund der Größe von PHP_INT_MAX (max 0xFFFFFFFF) nicht funktioniert. Und ich vermute, das wäre die gleiche Einschränkung für MySQL.
  3. Ich mag die Idee von mehreren Primärschlüsseln nicht als Lösung dafür, ich würde lieber eine String-Repräsentation verwenden, obwohl das nicht die bevorzugte Methode ist.

Ich könnte darüber nachdenken, alles falsch, und bin nicht gegen das Lesen von Dokumentation, so dass entweder Beispiele oder vorgeschlagene Lesung als Antwort akzeptabel wäre.

    
Aaron Murray 20.04.2013, 17:03
quelle

3 Antworten

25

In den meisten Fällen ist es am besten, UUIDs / GUIDs als BINARY(16) zu speichern. Sehen Sie sich diese verwandten StackOverflow-Fragen an:

Die Konvertierung kann (und sollte wahrscheinlich) in MySQL statt in PHP erfolgen, also spielt es keine Rolle, ob Sie einen 32bit PHP Client oder 64Bits verwenden (Wortspiel: P)

    
Hazzit 20.04.2013, 17:22
quelle
1

Verwenden Sie einen String-Typ, keine Ganzzahl. Besser ist nur besser wenn es ein Problem löst.

Wenn Ihnen die Suchgeschwindigkeit wirklich Sorgen bereitet, verwenden Sie einen synthetischen Primärschlüssel (Autoinkrement). Sie können eine eindeutige Einschränkung für die UUID-Spalte festlegen und sie nur einmal verwenden, um den synthetischen Schlüssel nachzuschlagen, der anschließend für Ihre Joins usw. verwendet wird.

    
PaulProgrammer 20.04.2013 17:04
quelle
0

Es hängt auch von der Speicher-Engine ab. TokuDB sollte alle diese Probleme behandeln.

    
giuseppe 02.03.2015 15:28
quelle

Tags und Links