Ответ
JSON хранится как текст с сохранением пробелов, порядка ключей и дубликатов, а JSONB — в бинарном формате, оптимизированном для обработки.
Основные отличия:
- Производительность: JSONB быстрее для запросов (индексируется)
- Хранение: JSONB занимает больше места из-за оптимизации
- Сравнение: JSONB поддерживает операторы (
@>,<@и т.д.), JSON — только текстовое сравнение
Пример запроса:
-- Создание таблицы с JSON и JSONB
CREATE TABLE test (id SERIAL, data_json JSON, data_jsonb JSONB);
-- Вставка данных
INSERT INTO test (data_json, data_jsonb)
VALUES ('{"key": "value"}', '{"key": "value"}');
-- Запрос с использованием JSONB оператора
SELECT * FROM test WHERE data_jsonb @> '{"key": "value"}';
Когда использовать:
- JSON — если важен исходный формат (например, для логов)
- JSONB — для частых запросов и модификаций данных