Бертран,
Если вы заинтересованы в рефакторинге существующего кода, я бы рекомендовал вам сначала отслеживать использование вашего ЦП и памяти при выполнении отчетов. Вы блокируете свой SQL-сервер или Apache (что происходит, если код PHP накладывает большой стресс на систему)?
Я работал над проектом, который изначально так сильно затормозил MySQL, что нам пришлось провести рефакторинг всего процесса генерации отчетов. Однако, когда мы закончили, нагрузка была просто перенесена в Apache (через более сложный код PHP). Наше окончательное решение состояло в том, чтобы реорганизовать структуру базы данных, чтобы обеспечить более высокую производительность для функций отчетности, и использовать PHP, чтобы выявить слабость в том, что мы не могли сделать изначально в MySQL.
В зависимости от характера отчетов вы можете рассмотреть вопрос о денормализации данных, используемых для отчетов. Вы могли бы даже подумать о создании второй базы данных, которая служит хранилищем данных и разработана на основе принципов OLAP, а не принципов OLTP. Вы можете начать с Википедии для общего объяснения OLAP и хранилищ данных.
Однако, прежде чем вы приступите к серьезному рефакторингу, убедитесь, что ваша среда достаточно похожа, посмотрев на phpinfo (); для PHP и SHOW VARIABLES;
в MySQL?