Интересно будем ждать и напиши за какое время делаться будет вся задача - интересно просто
время пока не смотрел, но обошёлся двумя циклами, но в них не логи, а кабинеты и статусы для каждого кабинета, которых конечно же не миллион. получил нужный массив.
ну и для каждого из четырех статусов SELECT COUNT(*).....GROUP BY. вроде работает шустро, он же кол-во считает
отдельно такой запрос кажется 0.014-0,003, если не ошибаюсь.