Я думаю, стандартное внутреннее соединение между этими тремя таблицами с индексами, определенными для столбцов reports.date
, reports.customer_id
и customers.manager_id
, как указано в комментарии (, кроме того, учитывая столбцы managers.id
и customer.id
как предполагается, что это первичные ключи, на которых уже есть уникальные индексы ) будет достаточно с точки зрения производительности:
SELECT m.id, count(r.id)
FROM customers c
JOIN managers m ON r.customer_id = c.id
JOIN reports r ON m.id = c.manager_id
WHERE r.date BETWEEN NOW() - INTERVAL '7 days' AND NOW()
AND r.decision = 'ACCEPTED'
GROUP BY m.id