загрузка пользовательской страницы составляет, примерно те же цифры, от 10 до 15 секунд.
база данных отвечает вам примерно в 1 миллион строк
встает вопрос: как именно это сделать и как реализовать?
Два простых шага:
1. Оторвать руки тому, кто вот это всё написал, и засунуть их ему туда, откуда они у него растут.
2. Нанять PHP junior-a, который уже освоил базовый синтасис SQL и умеет запрашивать из БД нужное количество строк.
ЗЫ.
Какие еще альтернативы можете предложить? К примеру, совмещение Vue с PHP.
Внимательно присмотреться к тому, кто подаёт такие идеи для решения этой проблемы.