Если у вас есть проблема и вы решили использовать регулярные выражения, у вас уже две проблемы.
Серьезно, разбирать html при помощи регулярных выражений - довольно плохая идея. Только если вы хорошо понимаете что вы делаете, как оно работает и в каких условиях.
Создать индексы составные, делать count запросы, что бы не дергать те данные, которые не изменились. Более подробный ответ можно дать если Вы хотя бы пример данных дадите. Что и как в базе? Что приходит и в каком виде по api? Откуда цифра 40 секунд взялась и насколько принципиально обновлять именно с такой периодичностью?