sql >> Databasteknik >  >> RDS >> PostgreSQL

Prestandaskillnad mellan UUID, CHAR och VARCHAR i PostgreSql-tabellen?

Använd uuid . PostgreSQL har den ursprungliga typen av en anledning.

Den lagrar uuid internt som ett 128-bitars binärt fält. Dina andra föreslagna alternativ lagrar den som hexadecimal, vilket är mycket ineffektivt i jämförelse.

Inte bara det, utan:

  • uuid gör en enkel bytevis sortering för beställning. text , char och varchar överväg sammanställningar och lokaler, vilket är meningslöst för en uuid.

  • Det finns bara en kanonisk representation av en uuid . Detsamma gäller inte för text etc; du måste överväga hexadecimal versus gemener, närvaro eller frånvaro av {...-...} s etc.

Det är bara ingen fråga. Använd uuid .

Den enda andra typen som är vettig är bytea , som åtminstone kan användas för att lagra de 16 byten av uuid direkt. Det här är vad jag skulle göra om jag använde system som inte kunde hantera datatyper utanför grunduppsättningen, som en riktigt dum ORM av något slag.



  1. Hur man omvänder ordningsföljden för en MySQL-fråga

  2. Användarkontohantering, roller, behörigheter, autentisering PHP och MySQL

  3. Exportera Oracle-databas till sql-fil?

  4. Virtuella kolumner och funktionella index