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:
-
uuidwykonuje proste sortowanie bajtów w celu porządkowania.text,charivarcharrozważ 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.