"Egor Shipovalov" <pgsql_list(at)eonline(dot)ru> writes:
> I'm implementing paging through search results using cursors. Is there a
> better way to know total number of rows under a cursor than running a
> separate COUNT(*) query? I think PostgreSQL is bound to know this number
> after the first FETCH, isn't it?
Why would you think that? In general Postgres doesn't know the number
of rows until it reaches the end of the query.
> On a side note, why queries using LIMIT are SO terribly slow, compared to
> cursors and sometimes even ones without LIMIT?
Generally they're not particularly slow. Perhaps you should show us the
EXPLAIN ANALYZE results for your problem case.
regards, tom lane