том что здесь происходит дофига оппераций с JSON, из-за чего всё немного тормозит
SELECT
g.uniqueGuideId,
g.type,
s.stepId,
sm.properties ->> '$.name' AS serverCallName,
JSON_EXTRACT(g.title, concat('$.', g.options ->> '$.defaultLanguage', '.title')) AS guideTitle
FROM guide g
JOIN step s ON g.guideId = s.guideId
JOIN stepModule sm ON sm.stepId = s.stepId AND sm.type = 'AUTOMATION' AND sm.properties ->> '$.authDataId' = ? AND sm.deleted = 0
WHERE g.deleted = 0
LIMIT ? OFFSET ?
Выкинуть в ж*** джисон, сделать нормальную базу данных на таблицах, переписать запросы. Три маленьких шага к счастью
json в бд обычно нужен, чтобы хранить всякий мусор, по которому не происходит выборки. те поля, по которым ты джоинишь и/или фильтруеш , надо выносить из джейсона
Ему это говорят уже раз в 10ый..
а потом к тебе разработчики приходят и говорят, а найди плз по вот этому полю в json записи, у нас что-то сломалось)
на ПГ есть индексы по jsonb. + одно дело разово такой запрос пульнуть. другой - на постоянке дрочить джоины с таким условием
в mysql тоже, просто ты их не делаешь, когда к тебе приходят с параметрами это мусор, а потом этот мусор парсить на проде не очень идея. Т.к что лучше мусорные данные отделять вообще, а не просто их рядом в json складывать
да, ладно, завезли-таки?) збс) ну это совсем хороший расклад.
Обсуждают сегодня