Еще один момент, если много картинок, то необходимо, чтобы в одной директории не скапливались они. То есть разбивать по поддиректориям.
Можно поубирать из запросов JOINы лишние. (языковые, мультимагазин, если не нужны).
И практика показывает, что если товаров больше 20к, то SEOPro лучше брать который не кэширует урлы.
Ну и подключить профайлер, чтобы увидеть узкие места.
Опенкарт приколен тем, что его можно пилить как угодно. Но в погоне за универсальностью очень много лишнего в запросах.
Максимально на опенкарте я размещал 10 млн товаров) Правда был выделенный сервер и использовались Sihnx (причем sphinx не как поисковик, а как полноценная БД в режиме LIve через PDO, в которой объединялись товары, всё грузилось в доли секунды) и потом уже добавился и Redis (тогда о нём не знал, потом узнал). Агрегатор автозапчастей был.