TGViewer
Spring АйО Spring АйО @spring_aio · 10.9K subscribers
Post #493 5.85K
🤨 TEXT vs VARCHAR: какой строковый тип выбрать в PostgreSQL? #ВопросЭксперту

Часто при работе с PostgreSQL у разработчиков возникает путаница в выборе строковых типов данных. В проектах можно встретить и TEXT, и VARCHAR, и даже просто CHAR. Нередко возникает вопрос: какой тип лучше, и есть ли вообще между ними разница с точки зрения производительности и хранения данных?

Эксперт сообщества Spring АйО Михаил Поливаха решил внести ясность и подготовил для вас небольшой ликбез, основанный на внутренней реализации этих типов в PostgreSQL.

–––

Какие типы поддерживает PostgreSQL:


CHAR - Это специфичный для PostgreSQL тип. Он создан, чтобы хранить один символ.

CHAR(N) - Хранит строку из символов длины N. При этом на диске физически выделяется фиксированное место для хранения N символов. Оно может быть больше, чем N.

VARCHAR - Функционально полностью эквивалентен типу TEXT.

VARCHAR(N) - Функционально эквивалентен типу TEXT, за исключением дополнительной функциональности по проверке длины входящей строки.

TEXT - Этот тип реализован через VLA (Variable Length Array). Позволяет хранить строки произвольной длины. Он выступает некоторой альтернативой типу CLOB в других СУБД. Пример приведён на картинке.


Обратите внимание, что TEXT, CHAR(N), VARCHAR и VARCHAR(N) в рамках PostgreSQL реализованы одинаково: через VLA, где VARCHAR(N) лишь обладает дополнительной логикой проверки длины строки в символах, а CHAR(N) аллоцирует фиксированный массив под хранение информации.

Поэтому не стоит опасаться использовать TEXT: он ничем не уступает VARCHAR(N) и CHAR(N) ни по производительности, ни по объёму хранения данных.

P.S: При работе с PostgreSQL через Hibernate, в общем случае, Вы можете не указывать явно конкретный java.sql.SQLType при маппинге. Hibernate способен самостоятельно смапить String на текстовые типы данных в PostgreSQL.

🔖 Сохраняйте, чтобы не потерять!
  • 👍 46
  • 🔥 20
  • ❤ 8
More from @spring_aio
  1. Oct 9, 2026👩‍💻 Kotlin получил почти настоящие статики Начиная с Kotlin 2.5.0-Beta1 можно эксперимен…
  2. Oct 8, 2026🍃 Spring Boot ломает совместимость, G1 тормозит микросервисы, Java долго релизит фичи | S…
  3. Oct 6, 2026👩‍💻 Spring Config Import без магии У наших друзей из Axelix вышла статья о том, как Spri…
  4. Oct 5, 2026🥲 В Java 27 TLS научился переживать квантовую атаку При установке HTTPS-соединения клиент…
  5. Oct 3, 2026⚡️⚡️Строки кода стремятся подешеветь до цены токена. Что остается ценным? Про это — трек «…
  6. Oct 2, 2026🙅‍♂️ Не каждый AI-вызов должен генерировать текст Иногда от модели нужен не красивый отве…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →