Я занимаюсь сейчас оптимизацией кода одного сайта. На сайте идет построение меню слева на странице.
Подробнее:
У меня есть массив типов изделий (20 наименований):
$types = array(1=>array('name'=>'кольца', ...), 2=>array('name'=>'серьги', ....), ...);
Также есть массив диапазонов цен:
$prices = array(1=>array('name'=>'до 1500 руб.', 'where_clause'=>' < 1500'), 2=>array('name'=>'от 1500 до 3000', 'where_clause'=>' BETWEEN 1501 AND 3000'), ...);
Хочу для каждого типа изделий определить сколько их в БД по каждому диапазону цен. Для этого работаю в циклах:
foreach ($types as $type=>$vals)
{
foreach ($prices as $price_id=>$price_info)
{
$sql = 'SELECT count(item) FROM table WHERE price '.$prices[$price_id]['where_clause'].' AND type='.$type;
}
}
Соответственно, если запрос возвращает мне 0, то я не вывожу информацию по данному изделию в определенном диапазоне цен.
Работаю в MySQL. Сайт достаточно посещаем. Но мне не нравится работа запроса в цикле, я понимаю, что это зло, но не представляю, как можно реализовать подобную задачу иначе: ведь при загрузке страницы все 20 наименований пробегаются в цикле и каждому надстраивается ряд диапазонов цен. До оптимизации кода предыдущим программистом было написано проще: он просто брал меньшее количество диапазонов цен и наименований изделий и просто по-порядку делал несколько запросов - не в цикле, а подряд. Естесственно, страница загружалась очень быстро. А с моей подобной оптимизацией получается, что страница открывается долго. Потому что и количество значений для подсчета увеличилось.
Как мне быть?

_____________
Столько дел...Не успеваю на все забить!!