> при таком запросе очень нагружается cpu и i/o.
Хмм... а Вы чего ожидали, извините? Что PostgreSQL возьмёт данные из воздуха (прочитать-то их нужно, правда)? ;)
> поможет ли limit в данной ситуации?
У Вас и проблемы-то нет, по-моему. Чтобы выдать данные как можно быстрее, PostgreSQL использует имеющиеся ресурсы, и это нормально. Вы, что, хотите, чтобы всё работало помедленнее (а disk, CPU и RAM в этот сервер вставлены для того, чтобы ими любоваться?). ;)
Кроме шуток, лучшего по производительности, чем с index-only scan, тут не добьёшься.
Если Вам почему-то нужно экономить ресурсы — сам PostgreSQL таким не занимается, нужно что-то внешнее (но зачем?!).