Verwenden Sie uuid
. PostgreSQL hat aus einem bestimmten Grund den nativen Typ.
Es speichert die uuid intern als 128-Bit-Binärfeld. Ihre anderen vorgeschlagenen Optionen speichern es als hexadezimal, was im Vergleich sehr ineffizient ist.
Nicht nur das, sondern:
-
uuid
führt eine einfache byteweise Sortierung zum Bestellen durch.text
,char
undvarchar
Betrachten Sie Sortierungen und Gebietsschemas, was für eine uuid unsinnig ist. -
Es gibt nur eine kanonische Darstellung einer
uuid
. Dasselbe gilt nicht für Text usw.; Sie müssen Groß- und Kleinbuchstaben, das Vorhandensein oder Fehlen von{...-...}
berücksichtigen s usw.
Es gibt einfach keine Frage. Verwenden Sie uuid
.
Der einzige andere sinnvolle Typ ist bytea
, die zumindest verwendet werden kann, um die 16 Bytes der uuid direkt zu speichern. Das würde ich tun, wenn ich Systeme verwenden würde, die mit Datentypen außerhalb des Basissatzes nicht umgehen können, wie eine Art wirklich dummes ORM.