Начиная с MySQL 4.0.0, вы можете использовать SQL_CALC_FOUND_ROWS в своем запросе, который скажет MySQL подсчитать общее количество строк без учета предложения LIMIT. Вам все еще нужно выполнить второй запрос, чтобы получить количество строк, но это простой запрос, который просто возвращает количество сохраненных строк.
Использование довольно просто. В ваш основной запрос вам нужно добавить опцию SQL_CALC_FOUND_ROWS сразу после SELECT, а во втором запросе вам нужно использовать функцию FOUND_ROWS (), чтобы получить общее количество строк. Запросы выглядят так:
SELECT SQL_CALC_FOUND_ROWS name, email
FROM users
WHERE name LIKE 'a%'
LIMIT 10;
SELECT FOUND_ROWS();
Единственное ограничение заключается в том, что вы должны вызывать второй запрос сразу после первого, потому что SQL_CALC_FOUND_ROWS нигде не сохраняет количество строк.
(скопировано с этой записи )