From: | "Egor Shipovalov" <pgsql_list(at)eonline(dot)ru> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Egor Shipovalov" <pgsql_list(at)eonline(dot)ru> |
Cc: | "Pgsql-General" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: How to get the total number of rows returned by query when using a cursor? |
Date: | 2003-09-23 15:38:37 |
Message-ID: | AKEFIKCGEAEFBICLBFBMGEJECIAA.pgsql_list@eonline.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> > 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.
Sorry, I thought that because my query was sorted. For unsorted queries,
yes, there's usually no way to know until you reach the end.
> > 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.
I did just that, but the plan was too complicated for me to comprehend ;)
The interesting thing is that some queries are tens (!) of times slower with
LIMIT that without. These contain a number of joins on subselects. If you're
interested, I'll post examples.
Best regards,
Egor Shipovalov.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-09-23 15:42:58 | Re: How to get the total number of rows returned by query when using a cursor? |
Previous Message | Vivek Khera | 2003-09-23 15:32:38 | Re: State of Beta 2 |