Utilizzare uuid
. PostgreSQL ha il tipo nativo per un motivo.
Memorizza internamente l'uu come campo binario a 128 bit. Le altre opzioni proposte la memorizzano come esadecimale, il che è molto inefficiente in confronto.
Non solo, ma:
uuid
fa un semplice sorta byte per byte per l'ordinazione. text
, char
e varchar
considerano le regole di confronto e le impostazioni locali, il che è privo di senso per un uuid.
Esiste solo una rappresentazione canonica di un uuid
. Lo stesso non è vero per il testo ecc; bisogna considerare superiore vs minuscolo esadecimale, presenza o assenza di {...-...}
s ecc
Non c'è proprio nessun problema. Utilizzare uuid
.
L'unico altro tipo che ha senso è bytea
, che almeno può essere utilizzato per memorizzare direttamente i 16 byte dell'uuid. Questo è quello che farei se usassi sistemi che non sono in grado di gestire tipi di dati esterni al set di base, come un ORM veramente stupido di qualche tipo.
fonte
2015-08-25 01:47:06
Per quanto ne so, il tipo UUID utilizza 16 byte, praticamente memorizzando l'UUID così com'è: un numero intero a 128 bit. Un 'char (36)' o 'varchar (36)' userebbe 36 byte. Non riesco a trovare dove è documentato più, comunque. Oltre a ciò, è necessario essere consapevoli delle implicazioni di come PostgreSQL esegue il clustering di tabelle/indici se l'UUID sarà la vostra chiave e si prevede di utilizzare l'opzione CLUSTER. –
http://simononsoftware.com/how-to-store-uuids-in-postgresql/ –