Доброго времени! Немного о задаче: Необходимо реализовать выборку статей в зависимости от выбранного раздела: Разделы имеют древовидную структуру с неограниченной вложенностью, в бд таблица разделов имеет поля id & parent_id, которые реализуют всю древовидность. Сами статьи привязываются только к "конечным" разделам, которые не имеют подразделов. Пример Т.е. если выбран Раздел 1, то нужно получить id Разделов 1.1.1, 1.1.2, 1.2.1, 1.3.1 и вывести все статьи, которые к ним привязаны. Проблема в том как это реализовано: Выбираются в начале айдишники детей Раздела 1, потом айдишники их детей, итого 4 запроса(в конкретном случае). Но на реальной базе в больших разделах до 100-500 запросов. Плюс выборка статьей по через section_id IN (массив из 100+ элементов) долгое занятие. Вопрос Как увеличить скорость работы, т.к. страница в итоге загружается за 10-15 секунд.
если вложенность неглубокая, вам подойдет materialized path. реализация простейшая. скорость вполне приемлемая, в вашем случае - выборка будет одним запросом
Я бы так сказал: если в аналоге из реального мира есть нумерация 1.1 1.2 1.2.1 то это жирный намек использовать материализованные пути в базе!