SQLLab
Типы данныхСредний

JSONB

Бинарное хранение JSON в PostgreSQL с поддержкой индексов и операторов поиска.

Синтаксис
col JSONB
col->'key'          -- вложенный объект
col->>'key'         -- текстовое значение
col @> '{"key":val}'  -- содержит

Объяснение

JSONB парсит JSON и хранит в бинарном виде — быстрее читать и индексировать. JSON хранит оригинальный текст — медленнее, зато сохраняет порядок ключей. JSONB поддерживает GIN-индексы для поиска по вложенным полям. Операторы: -> (объект), ->> (текст), @> (содержит), ? (ключ существует).

Пример

-- Создать GIN индекс на JSONB
CREATE INDEX ON products USING GIN (attributes);

-- Найти продукты с цветом 'red'
SELECT * FROM products
WHERE attributes @> '{"color": "red"}';

-- Извлечь поле
SELECT name, attributes->>'brand' AS brand FROM products;