Помогите ускорить работу запроса
Запрос вида:
SELECT
users.id,
(SELECT COUNT(requests.id) FROM requests WHERE user_id = users.id OR user_id IN (SELECT id FROM users as workers WHERE workers.parent_id = users.id) ) AS `all_requests`
FROM `users`
отрабатывает мега долго, но не могу придумать чем заменить
Ответы (1 шт):
Автор решения: Anton Colomiiciuc
→ Ссылка
решилось такой конструкцией:
SELECT
agents.id,
(COUNT(DISTINCT requests.id))
FROM `users` AS agents
left JOIN users AS workers ON workers.parent_id = agents.id
left JOIN requests ON requests.user_id = agents.id OR requests.user_id = workers.id
GROUP BY agents.id