sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Diferencia de rendimiento entre UUID, CHAR y VARCHAR en la tabla PostgreSql?

Usa uuid . PostgreSQL tiene el tipo nativo por una razón.

Almacena el uuid internamente como un campo binario de 128 bits. Sus otras opciones propuestas lo almacenan como hexadecimal, lo cual es muy ineficiente en comparación.

No solo eso, sino que:

  • uuid hace una ordenación simple por bytes para ordenar. text , char y varchar considere intercalaciones y configuraciones regionales, lo cual no tiene sentido para un uuid.

  • Solo hay una representación canónica de un uuid . No ocurre lo mismo con el texto, etc.; debe considerar mayúsculas y minúsculas hexadecimales, presencia o ausencia de {...-...} etc.

Simplemente no hay duda. Usa uuid .

El único otro tipo que tiene algún sentido es bytea , que al menos se puede usar para almacenar los 16 bytes del uuid directamente. Esto es lo que haría si estuviera usando sistemas que no pudieran manejar tipos de datos fuera del conjunto básico, como un ORM realmente tonto de algún tipo.