2. Справочник по услугам (500 записей)
(там же в таблица, справочник по Работникам - общая таблица справочников такая большая)
| id | name | category |
| 2 | прибить полку | usluga |
| 3 | Василий | workers |
Подскажите как лучше и грамотно написать запрос результатом которого будет: нужно узнать количество (сколько) Василий выполнил каждой услуги из справочника, если Василий не делал определенной услуги - 0. то выводить услугу не нужно.
т.е.
Василий
Уборка снега - 3 раза
Повесил картину - 4 раза
Уборка помещения - 0 (не нужно, не показывать)
Петрович
Уборка снега - 1 раза
Повесил картину - 55 раза
Уборка помещения - 233
Вся сложность у меня, что
Василиев = 500
Услуг = 200
А отметках об исполнении = 350 000 строк
Все сделано на Count() - слышал, что оно очень грузит базу, да так и есть.
Можно ли выполнить данный запрос без Count ?
Текущие мои запросы стыдно показывать, очень вешают сервер.
Убедитесь, что у вас стоит индекс по двум полям сразу (job_id, worker_id => id_uslugi , id_rabotnik) Запрос на такой небольшой таблице должен выполняться достаточно быстро
SELECT c.name, b.name, count(*) from unslugi as a
left join info as b on a.job_id=b.id
left join info as c on a.worker_id=c.id
WHERE a.usluga_okazana=1
GROUP BY a.job_id, a.worker_id;
"Все сделано на Count() - слышал, что оно очень грузит базу, да так и есть."
эта фраза не совсем ясна, каунт не должен "очень грузить" базу, подозреваю что дело в запросе а не в каунте, можете выложить запрос на обозрение, может кто увидит ошибку или ньюанс