PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Diferença de desempenho entre UUID, CHAR e VARCHAR na tabela PostgreSql?


Use uuid . O PostgreSQL tem o tipo nativo por um motivo.

Ele armazena o uuid internamente como um campo binário de 128 bits. Suas outras opções propostas o armazenam como hexadecimal, o que é muito ineficiente em comparação.

Não só isso, mas:

  • uuid faz uma classificação bytewise simples para ordenação. text , char e varchar considere agrupamentos e localidades, o que não faz sentido para um uuid.

  • Existe apenas uma representação canônica de um uuid . O mesmo não é verdade para texto etc; você deve considerar hexadecimal maiúsculo vs minúsculo, presença ou ausência de {...-...} s etc.

Não há dúvida. Use uuid .

O único outro tipo que faz sentido é bytea , que pelo menos pode ser usado para armazenar os 16 bytes do uuid diretamente. Isso é o que eu faria se estivesse usando sistemas que não pudessem lidar com tipos de dados fora do conjunto básico, como algum tipo de ORM realmente estúpido.