На практике, когда мне задают такую проблему, я обычно выбираю на одну больше, чем я желаю отображать (скажем, 500, так что потяните 501), и если я достиг этой суммы, то сообщаю пользователю «Более 500 записей были возвращены "который дает пользователю возможность уточнить запрос. Вы можете сначала выполнить подсчет запроса, а затем вернуть первые n строк, но для этого потребуется еще одна поездка на сервер и, в зависимости от сложности запроса и объема данных, это может занять много времени.
Другим методом будет добавление в таблицу статистики подсчетов, которые вы можете суммировать непосредственно перед выполнением этого запроса. Теория состоит в том, что ваша таблица статистики будет содержать гораздо меньше данных, чем ваши основные таблицы, и поэтому может быстро обрабатываться сервером. Если вы пишете процесс (хранимые процедуры работают лучше всего), чтобы обновить их, а затем вернуть результаты.
Я не уверен насчет вашего приложения или ваших пользователей. Но мой, как правило, либо не заботится об общем количестве записей, либо хочет только общее количество записей и не хочет детализации.