История изменений
Исправление Aswed, (текущая версия) :
Ну как минимум ты можешь не делать два подзапроса user_null и user_not_null, а сделать один с тем же DISTINCT. У тебя же запросы одинаковые. Да и ar можно не делать подзапросом, а просто джоином ограничиться. Что-то типа:
SELECT DISTINCT
pp."Account" AS "Account",
pp."User" AS "Responsible",
pp."Event" AS "Event",
array_agg(DISTINCT pp."Subscriber") AS "Subscriber",
MIN(pp."EndDate") AS "MinimalDate"
FROM "Documents" pp
INNER JOIN "ActualDocuments" as ar ON (
pp."Account" = ar."Account" AND
pp."Event" = ar."Event"
)
WHERE
ar."Account" = ANY('{3344433}'::bigint[]) AND
ar."MinimalDate" < '2021-09-20'::date
GROUP BY pp."Account", pp."User", pp."Event"
Так три запроса схлопываются в один
Исходная версия Aswed, :
Ну как минимум ты можешь не делать два подзапроса user_null и user_not_null, а сделать один с тем же DISTINCT. У тебя же запросы одинаковые. Да и ar можно не делать позавпросом, а просто джоином ограничиться. Что-то типа:
SELECT DISTINCT
pp."Account" AS "Account",
pp."User" AS "Responsible",
pp."Event" AS "Event",
array_agg(DISTINCT pp."Subscriber") AS "Subscriber",
MIN(pp."EndDate") AS "MinimalDate"
FROM "Documents" pp
INNER JOIN "ActualDocuments" as ar ON (
pp."Account" = ar."Account" AND
pp."Event" = ar."Event"
)
WHERE
ar."Account" = ANY('{3344433}'::bigint[]) AND
ar."MinimalDate" < '2021-09-20'::date
GROUP BY pp."Account", pp."User", pp."Event"
Так три запроса схлопываются в один