PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Différence de performances entre UUID, CHAR et VARCHAR dans la table PostgreSql ?

Utilisez uuid . PostgreSQL a le type natif pour une raison.

Il stocke l'uuid en interne sous la forme d'un champ binaire de 128 bits. Vos autres options proposées le stockent en hexadécimal, ce qui est très inefficace en comparaison.

Non seulement cela, mais :

  • uuid effectue un simple tri par octet pour le classement. text , char et varchar considérez les classements et les paramètres régionaux, ce qui n'a aucun sens pour un uuid.

  • Il n'y a qu'une seule représentation canonique d'un uuid . Il n'en va pas de même pour le texte, etc. vous devez considérer l'hexagone majuscule vs minuscule, la présence ou l'absence de {...-...} etc.

Il n'y a aucun doute. Utilisez uuid .

Le seul autre type qui a du sens est bytea , qui au moins peut être utilisé pour stocker directement les 16 octets de l'uuid. C'est ce que je ferais si j'utilisais des systèmes qui ne pouvaient pas gérer les types de données en dehors de l'ensemble de base, comme un ORM vraiment stupide.