Яка різниця між типом "varchar" та "text" у PostgreSQL?


15

Все, що я знаю про їхні відмінності, varcharмає межу, і textце не так. У документації про це не йдеться.

Це справді єдина різниця? Не враховуйте продуктивність чи інше?


1
Це дійсно слід перенести до адміністраторів баз даних . Це не має нічого спільного з адміністрацією сервера.
Еван Керролл

Відповіді:


22

Фон цього: Стара система Postgres використовувала мову PostQUEL і використовувала тип даних з назвою text(адже хтось вважав, що це добре ім'я для типу, який зберігає текст). Потім Postgres був перетворений для використання SQL як своєї мови. Для досягнення сумісності з SQL замість перейменування textтипу varcharбуло додано новий тип . Але обидва типи використовують все ті ж підпрограми C всередині.

Зараз, певною мірою, а в деяких місцях, він textє жорстким кодом як тип за замовчуванням, на випадок, якщо нічого іншого неможливо отримати. Крім того, більшість функцій доступні лише як textаргумент або повернення text. Два типи є бінарними сумісними, тому кастинг - це тривіальна операція розбору. Але використання textвсе-таки більш природно для системи.

Але окрім цих тонких моментів, помітної різниці немає. Використовуйте те, що з вас виглядає красивіше. ;-)


Добре пояснення. Я буду використовувати "текст", оскільки мені не байдуже сумісність, яка блокує використання переваг конкретного продукту. Спасибі!
Eonil

1

Дивіться подібне запитання . Суть полягає в тому, що різниці немає, але вказати максимальну довжину, таку як varchar(n)правило, не на вашу користь, оскільки вона використовує більше місця, але не покращує продуктивність.


0

http://www.postgresql.org/docs/8.4/interactive/datatype-character.html

character varying(n), varchar(n)        variable-length with limit
text                                    variable unlimited length

текст без оголошеної довжини. Немає відмінностей у роботі між цими двома типами.


5
Ви також можете використовувати varchar без частини (), що також зробить його необмеженою довжиною, і, таким чином, більш-менш еквівалентно тексту.
Магнус Хагандр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.