Все, что я знаю о различиях между ними, varchar
имеет предел, а text
его нет. В документации не упоминается об этом.
Это действительно единственная разница? Не заботиться о производительности или т. Д.?
database
postgresql
Eonil
источник
источник
Ответы:
Предпосылки этого таковы: старая система Postgres использовала язык PostQUEL и использовала тип данных с именем
text
(потому что кто-то считал, что это хорошее имя для типа, в котором хранится текст). Затем Postgres был преобразован для использования SQL в качестве языка. Для достижения совместимости с SQL вместо переименованияtext
типаvarchar
был добавлен новый тип . Но оба типа используют одни и те же подпрограммы Си внутри.Теперь, в некоторой степени и в некоторых местах,
text
он жестко закодирован как тип по умолчанию, если больше ничего не может быть получено. Кроме того, большинство функций доступны только в качествеtext
аргумента или возвратаtext
. Два типа являются двоично-совместимыми, поэтому приведение является тривиальной операцией анализа. Но использованиеtext
все еще более естественно для системы.Но, кроме этих тонких моментов, заметной разницы нет. Используйте тот, который кажется вам более симпатичным. ;-)
источник
Смотрите этот похожий вопрос . Суть в том, что нет никакой разницы, но указание максимальной длины, как
varchar(n)
правило, не в вашу пользу, поскольку она занимает больше места, но не повышает производительность.источник
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
текст без объявленной длины. Между этими двумя типами нет различий в производительности.
источник