В итоге переделал на использование метода дихотомии, а не хорд.
Если кому интересны попугаи с виртуальной машины, то для пользователя с 250к постами оригинальный запрос работал 280 секунд.
А "добыча" 14ю итерациями на только что перезапущенной мусе (чтобы убить кэши и буферы) десяти айдишников записей - 6 секунд. Добыча для второй страницы - 0.2 сек (за счет query cache - итерации очень хорошо кэшируются).
-~{}~ 20.02.08 22:45:
теперь про постгрес...
на оригинальном запросе он читерит

для первых ~10 страниц (по 10 записей) он использует backward index scan, т.е. использует сортировку по pub_date, жертвуя тем, что придется отбрасывать много мусора: посты из фидов, на которые пользователь не подписан. При этом работает довольно быстро (0.1 .. 1 сек). Но уже к 20й странице все встает на свои места, и он показывает тот же файлсорт (таблица на 300мбайт), что и муся, и, соответственно, сопоставимое время - 240 секунд. Со временем возможность backward index scan'а будет только падать, потому что кол-во фидов будет, вероятно расти быстрее, чем кол-во фидов, на которые подписан какой-то отдельно взятый пользователь, и, соответстенно, мусора тоже будет все больше и больше...
Теперь осталось начать у него runtime выпытывать, будет ли он справляться быстро с этим запросом, и, соответственно, исполнять либо его в лоб, либо, в обратном случае, пользоваться моим алгоритмом
