xmoonlight: оукей, может я туплю... Но как постоянные соединения (мы же не подключаемся к базе в цикле) влияют на то что вместо одного запроса нам придется сделать N запросов в базу? Даже если представить что один запрос в базу это милисекунда + накладные расходы на обработку результатов это +5 милисекунд мы уже получаем 60 милисекунд работы скрипта и даже за счет кеширования в самой базе ничего сильно не поменяется.
Сергей Протько: не, все верно понимаешь. время приблизительное одинаковое. просто я к твоему коменту, как вариант оптимизации: не только можно сделать 1 запрос а потом обработку, но еще и ничего не меняя просто не рвать соединение с базой и юзать этот код без изменений. (т.е. по варианту мы предложили)
xmoonlight: Время вообще не одинаковое. Если дерево большое, то производительность у Вас все будет проседать и проседать ... БД будет получать куууучу ненужных запросов. А вот выбрать все категории разом и рекурсивно пройтись по ним, заменив пару строк кода, как предложил Сергей Протько - это хорошее решение.