Ok, ich möchte nur wissen, was das Verhalten dieser Anmerkung macht:
%Vor%Sind die Schlüssel in aufsteigender Reihenfolge, wenn ich Zeilen in meine Tabelle einfüge?
Ich weiß, dass die Schlüssel nicht so einfach sind wie 00001
, 000002
und verhält sich wie
007f13ff-ce26-11e4-8e3d-a0b3cce9bb7e
00805a63-ce26-11e4-8e3d-a0b3cce9bb7e
0b1b6ca9-d178-11e4-8e3d-a0b3cce9bb7e
aber meine Frage ist, sind die Schlüssel in einer bestimmten Reihenfolge wie die erste eingefügte Zeile ist ein niedrigerer alphanumerischer Wert als der letzte Wert .. Immer?
Kurze Antwort: UUID sind nicht in einer bestimmten Reihenfolge.
UUID sind eine Alternative zu Autoinkrement-Ganzzahlen, die immer mehr verwendet werden, weil sie einige Vorteile haben.
>Sie brechen Ihre Anwendung nicht, wenn Sie den 65537-Datensatz einfügen (oder ähnlich 2 ^ x + 1, abhängig von der ursprünglichen Größe der ID). Das Schlimmste, was passieren kann, ist, dass du eine doppelte ID hast, aber das ist sehr unähnlich: Ссылка
Sie können sie in Ihrem Code generieren vor Speichern des Datensatzes; Sie müssen "last_insert_id" nicht aus der Datenbank abrufen. Das ist gut, zum Beispiel, wenn Sie auch verwandte Datensätze in einer anderen Tabelle speichern müssen (natürlich kann Doctrine das für Sie übernehmen, aber das ist eine andere Geschichte).
Sie geben die Anzahl der Datensätze in Ihrer Tabelle nicht an einen intelligenten Mann weiter, der die ID der aktuellen Bestellung lesen kann :-)
In der derzeit gebräuchlichsten Version (v4) sind UUID rein zufällig, sie sind also nicht in einer bestimmten Reihenfolge.
Version 1 UUID ist eine Kombination aus einem 60-Bit-Timestamp mit einer 48-Bit-MAC-Adresse.
Wenn Sie die Doctrine-UUID-Strategie verwenden, verwenden Sie im Grunde die datenbankspezifische Implementierung (d. h. UUID()
function). Im Fall von MySQL 5.7 handelt es sich um ein v1-kompatibles Schema, das die UUID als
wo
aaaaaaaa
ist der untere Teil des Zeitstempels bbbb
ist der mittlere Teil des Zeitstempels cccc
ist der obere Teil des Zeitstempels dddd
fügt eine zeitliche Eindeutigkeit hinzu, wenn die Zeit angepasst wird eeeeeeeeeeee
ist die Knoten-ID (MAC-Adresse) Da der Zeitstempel umgekehrt ist, wenn Sie mehrere UUID in kurzer Zeit produzieren, werden Sie sie sortieren, aber auf lange Sicht werden sie nicht sortiert. Denken Sie daran, die aktuellen Sekunden als ersten Teil der UUID zu verwenden.
Hinweis: Die Antwort wurde dank des @Etki-Kommentars verbessert, der einen wertvollen Beitrag hinzufügte und mich dazu zwang, mehr über das Thema zu erfahren.