В MySQL используйте SQL_CALC_FOUND_ROWS
. Например:
SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE x = y LIMIT s,m
Сразу после запроса снова:
SELECT FOUND_ROWS() AS TotalRows
Использование директивы SQL_CALC_FOUND_ROWS
заставляет MySQL хранить общее количество строк, найденных для последнего запроса, перед применением ограничения и диапазона. Это то же самое, что выполнять Count () для одного и того же запроса без дополнительных затрат на то, чтобы фактически считать, а затем запросить, а затем ограничить запрос.
Оберните два вызова базы данных в транзакции, чтобы убедиться, что они выполняются последовательно. Вы также можете подумать о том, чтобы абстрагировать запросы в функцию, которая будет выполнять оба действия и возвращать одну структуру с ключом результатов и ключами общих строк. Используйте результаты, приведенные выше, для создания ссылок на страницы по своему усмотрению.