Помогите ускорить работу запроса

Запрос вида:

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
→ Ссылка