Provavelmente o culpado são suas consultas ao banco de dados e o uso insuficiente de índices.
Você deve verificar suas consultas SQL com o recurso MySQL EXPLAIN
, para que você possa ver como os resultados são produzidos.
Se não houver nada para melhorar nos índices do banco de dados, é necessário considerar a implementação do armazenamento em cache de conjuntos de dados prontos usando o PHP ou o Memcache.