Wszystko, co wiem o różnicach między nimi, varchar
ma limit, a text
nie jest. Dokumentacja nie wspomina o tym.
Czy to naprawdę jedyna różnica? Bez względu na wydajność itp.?
database
postgresql
Eonil
źródło
źródło
Odpowiedzi:
Tłem tego jest: stary system Postgres używał języka PostQUEL i używał nazwanego typu danych
text
(ponieważ ktoś uważał, że to dobra nazwa dla typu przechowującego tekst). Następnie Postgres został przekonwertowany na język SQL jako język. Aby osiągnąć zgodność z SQL, zamiast zmiany nazwytext
typu dodano nowy typvarchar
. Ale oba typy używają wewnętrznie tych samych procedur C.Teraz, do pewnego stopnia i w niektórych miejscach,
text
jest zakodowany na stałe jako typ domyślny, na wypadek, gdyby nic innego nie można było uzyskać. Ponadto większość funkcji jest dostępna tylko jakotext
argument lub powróttext
. Te dwa typy są kompatybilne binarnie, więc rzutowanie jest trywialną operacją w czasie analizy. Ale korzystanie z systemutext
jest ogólnie bardziej naturalne dla systemu.Ale oprócz tych drobnych punktów nie ma zauważalnej różnicy. Używaj tego, co wygląda dla ciebie ładniej. ;-)
źródło
Zobacz to podobne pytanie . Największą zaletą jest to, że nie ma różnicy, ale określenie maksymalnej długości, na
varchar(n)
ogół nie jest na twoją korzyść, ponieważ zajmuje więcej miejsca, ale nie poprawia wydajności.źródło
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
tekst bez zadeklarowanej długości. Nie ma różnic w wydajności między tymi dwoma typami.
źródło