Я нашел решение и хочу поделиться им.Что я делаю - я создаю временную таблицу из моей реальной таблицы с примененными фильтрами, затем выбираю из временной таблицы предел и смещение (без ограничений, поэтому производительность хорошая), затем выбираю count (*) извременная таблица (опять же без фильтров), затем другие вещи, которые мне нужны, и последнее - я удаляю временную таблицу.
select * into tmp_tbl from tbl where [limitations];
select * from tmp_tbl offset 10 limit 10;
select count(*) from tmp_tbl;
select other_stuff from tmp_tbl;
drop table tmp_tbl;