Назад к вопросам
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.