А. Экономь память
1. Храни как можно меньше данных в памяти. Запросы в БД делай через курсоры, чтобы извлекалось меньше записей. Не используй жадные выборки без перечисления полей (SELECT *) особенно если в запросе есть JOIN.
2. Не храни в памяти сырые данные. Копи суммы по каждой записи, веди счётчики где надо, вычисляй функции, даже формируй HTML по мере чтения, но целиком выборку в память не собирай.
Б. Используй очереди (RabbitMQ и другие) для реализации асинхронности, чтобы браузер не ждал бесконечно ответа. Ответ запрашивай отдельным запросом
В. ... или сделай сервер Comet и пусть PHP сам выдаст результат, когда закончит работу