Задача типичная, пагинация записей из базы.
Сделать выборку записей с лимитом и подсчитать сколько записей всего попадает под это условие.
Стандартное решение:
SELECT * FROM users WHERE status > 0 limit 10;
SELECT COUNT(*) FROM users WHERE status > 0;
Но 2 запроса к базе не есть хорошо, а если основной запрос тяжелый с Join'ами и вложенными запросами, то вдвойне не хорошо. Вроде есть решение с SQL_CALC_FOUND_ROWS, но почему-то на mariaDB 10.1.44 не работает, а в MySQL 8.0 вообще судя по
официальному сайту объявлено устаревшим.
Кто как решает данную проблему? На данный момент я использую классический метод с 2-мя запросами и кэширую результаты подсчета средствами PHP + memcached для не часто обновляемых данных. Т.е второй запрос на подсчет количества записей делаю не всегда.