Как хранить текст в PostgreSQL

«Как хранить текст в PostgreSQL» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для хранения текста в PostgreSQL есть несколько типов данных:

  1. VARCHAR(n) - строка переменной длины до n символов. Если строка короче, занимает только нужное место.
CREATE TABLE users (
    name VARCHAR(100)
);
  1. TEXT - строка неограниченной длины. Оптимальный выбор для больших текстов.

  2. CHAR(n) - строка фиксированной длины, дополняется пробелами. Используется редко.

Основные рекомендации:

  • Для обычных строк используйте TEXT или VARCHAR
  • Если нужны ограничения по длине (например, username) - VARCHAR
  • Для очень больших текстов (статьи, документы) - TEXT
  • CHAR практически не используется в современных приложениях

Пример с Go:

_, err := db.Exec("INSERT INTO articles (title, content) VALUES ($1, $2)", 
    "PostgreSQL Types", 
    "This is a long article about PostgreSQL text storage...")

PostgreSQL автоматически оптимизирует хранение TEXT/VARCHAR, разницы в производительности между ними практически нет.