База данных не имеет возможности узнать, сколько строк соответствует запросу, если она на самом деле не выполняет все это. Например, если вы выбираете для MYCOLUMN> 5, тогда нужно прочитать MYCOLUMN в каждой строке таблицы, чтобы узнать, сколько из них имеет значения больше 5. (Хотя вы можете повысить эффективность с помощью индекса.)
Обычно каждый использует COUNT (*) для целей, которые вы описали.
Единственный другой способ, которым я могу придумать, чтобы получить количество строк, которое будет возвращено для запроса без особой работы, - это поместить в таблицу функцию триггера, которая обновляет счетчик каждый раз, когда строка вставляется, обновляется или удаляется в зависимости от того, соответствует ли он запросу. Однако это жестко, так как его необходимо настраивать для отдельных запросов, и, конечно, это не независимый от базы данных подход.