SQLLab
Теория· 8 мин· 10 XP

Что такое JSONB и зачем он нужен

PostgreSQL поддерживает два типа для хранения JSON: JSON и JSONB.

ТипХранениеЗапросыИндексы
JSONТекст как естьМедленнееНет
JSONBБинарный форматБыстрееGIN индекс

Всегда используйте JSONB — он эффективнее и поддерживает операторы для поиска.

Основные операторы

sql
-- -> возвращает JSONB (объект или массив)
profile->'social'          -- {"github":"alice-dev"}

-- ->> возвращает TEXT
profile->>'level'          -- senior

-- #> вложенный путь (JSONB)
profile#>'{social,github}' -- "alice-dev"

-- #>> вложенный путь (TEXT)
profile#>>'{social,github}'-- alice-dev

Пример

sql
SELECT
    username,
    profile->>'level'              AS level,
    profile->'social'->>'github'   AS github
FROM users;

Поле profile в нашем датасете содержит:

json
{
  "level": "senior",
  "location": "Москва",
  "skills": ["Python", "SQL", "PostgreSQL"],
  "social": {"github": "alice-dev"},
  "preferences": {"theme": "dark", "notify_email": true}
}

Прочитайте урок до конца — прогресс засчитается автоматически