sql >> Database >  >> RDS >> PostgreSQL

Prestatieverschil tussen UUID, CHAR en VARCHAR in PostgreSql-tabel?

Gebruik uuid . PostgreSQL heeft niet voor niets het native type.

Het slaat de uuid intern op als een 128-bits binair veld. Je andere voorgestelde opties slaan het op als hexadecimaal, wat erg inefficiënt is in vergelijking.

Niet alleen dat, maar:

  • uuid doet een eenvoudige bytewise-sortering voor het bestellen. text , char en varchar overweeg sorteringen en landinstellingen, wat onzinnig is voor een uuid.

  • Er is slechts één canonieke weergave van een uuid . Hetzelfde geldt niet voor tekst enz.; u moet rekening houden met hoofdletters versus kleine letters, de aanwezigheid of afwezigheid van {...-...} s enz.

Er is gewoon geen vraag. Gebruik uuid .

Het enige andere type dat enige zin heeft, is bytea , die in ieder geval kan worden gebruikt om de 16 bytes van de uuid direct op te slaan. Dit is wat ik zou doen als ik systemen zou gebruiken die niet kunnen omgaan met datatypes buiten de basisset, zoals een echt domme ORM van een soort.



  1. Tekstcompressie in PostgreSQL

  2. MySQL zei:Documentatie #1045 - Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:NEE)

  3. PostgreSQL unescape JSON-tekenreeks

  4. Hoe maak je een mysql kubernetes-service met een lokaal aangekoppeld datavolume?