Sobes.tech
Назад к вопросам
Middle
3

Чем JSON и JSONB отличаются в PostgreSQL?

Компании, где спрашивали
Evrone

Ответ от нейросети

sobes.tech AI

В PostgreSQL типы данных JSON и JSONB используются для хранения JSON-структур, но отличаются по внутреннему представлению и производительности.

  • JSON хранит данные как текст, в том виде, в котором они были переданы. При каждом запросе происходит парсинг текста в структуру данных.
  • JSONB (Binary JSON) хранит данные в бинарном формате, который уже распарсен и оптимизирован для быстрого доступа и индексации.

Основные отличия:

  • JSONB поддерживает индексы (GIN, GiST), что ускоряет поиск по содержимому.
  • JSONB занимает чуть больше места, но быстрее в обработке.
  • JSON сохраняет форматирование и порядок ключей, JSONB — нет.

Пример использования JSONB с индексом:

CREATE TABLE documents (
  id serial PRIMARY KEY,
  data jsonb
);

CREATE INDEX idx_data ON documents USING gin (data);

SELECT * FROM documents WHERE data @> '{"key": "value"}';

Если важна скорость запросов и поиск по JSON, лучше использовать JSONB.