PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Differenza di prestazioni tra UUID, CHAR e VARCHAR nella tabella PostgreSql?

Usa uuid . PostgreSQL ha il tipo nativo per un motivo.

Memorizza l'uuid internamente come campo binario a 128 bit. Le altre opzioni proposte lo memorizzano come esadecimale, il che è molto inefficiente in confronto.

Non solo, ma:

  • uuid esegue un semplice ordinamento bytewise per l'ordinamento. text , char e varchar considera le regole di confronto e le impostazioni locali, il che non ha senso per un uuid.

  • C'è solo una rappresentazione canonica di un uuid . Lo stesso non vale per il testo ecc; devi considerare maiuscolo e minuscolo esadecimale, presenza o assenza di {...-...} se ecc.

Non ci sono domande. Usa uuid .

L'unico altro tipo che ha senso è bytea , che almeno può essere utilizzato per memorizzare direttamente i 16 byte dell'uuid. Questo è ciò che farei se utilizzassi sistemi che non sono in grado di far fronte a tipi di dati al di fuori del set di base, come un ORM davvero stupido di qualche tipo.