PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Różnica wydajności między UUID, CHAR i VARCHAR w tabeli PostgreSql?

Użyj uuid . PostgreSQL nie bez powodu ma typ natywny.

Przechowuje uuid wewnętrznie jako 128-bitowe pole binarne. Inne proponowane opcje przechowują je w postaci szesnastkowej, co w porównaniu jest bardzo nieefektywne.

Nie tylko to, ale:

  • uuid wykonuje proste sortowanie bajtów w celu porządkowania. text , char i varchar rozważ sortowanie i ustawienia regionalne, co jest bezsensowne dla uuid.

  • Jest tylko jedna reprezentacja kanoniczna uuid . To samo nie dotyczy tekstu itp.; musisz wziąć pod uwagę duże i małe litery szesnastkowe, obecność lub brak {...-...} itd.

Po prostu nie ma wątpliwości. Użyj uuid .

Jedynym innym typem, który ma sens, jest bytea , który przynajmniej może być użyty do bezpośredniego przechowywania 16 bajtów identyfikatora uuid. To właśnie zrobiłbym, gdybym używał systemów, które nie radzą sobie z typami danych spoza podstawowego zestawu, jak jakiś naprawdę głupi ORM.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać ALIAS w klauzuli PostgreSQL ORDER BY?

  2. Tworzenie kopii bazy danych w PostgreSQL

  3. Django ładuje się bardzo wolno

  4. Fabric i Sudo jako inny użytkownik

  5. Skopiuj dane między dwiema tabelami w PostgreSQL za pomocą dblink.sql