более пристойное?
SELECT name FROM artifacts
WHERE release_id = (SELECT id FROM releases WHERE hash LIKE '%' || $1 || '%' OR ref LIKE '%' || $1 || '%' AND project_id
IN (SELECT id FROM projects WHERE name LIKE '%' || $2 || '%') limit 1)
AND stage_id = (SELECT id FROM stages WHERE name LIKE '%' || $3 || '%' limit 1);
CTE повышет пристойность неплохо
Замените на детерминированный запрос, первым делом: (SELECT id FROM stages WHERE name LIKE '%' || $3 || '%' limit 1); Ну или уберите отсюда LIMIT, если он на самом деле не нужен. А так, JOIN-ы будут выглядеть получше, чем IN-ы, мне кажется.
Обсуждают сегодня