Tom Lane wrote:
> Chris <dmagick@gmail.com> writes:
>> Fabio Victora Hecht wrote:
>>> I was wondering if there's a way to count the results of a query and
>>> return part of the result set it in one query (LIMIT).
>
>> I was going to suggest a cursor but I don't think you can get the number
>> of results a cursor has :(
>
> In general it's not possible to determine the number of rows a query
> will return without actually executing it to completion.
>
> You could use a cursor like this:
>
> begin;
> declare c cursor for select ... ;
> fetch 20 from c;
> -- display the first 20 results
> move forward all in c;
> -- note the count returned by MOVE, add 20 to get the total
>
> but if you're expecting the MOVE to be instantaneous, prepare to be
> disappointed.
>
> If you're willing to settle for a (very) approximate count, there are
> things you could do. Some people just feed the query to EXPLAIN and
> grab the rowcount estimate out of the first line of output.
Interesting idea :) I wasn't sure if cursor did the whole query and
(somehow) stored it in memory.. obviously not (and of course that would
blow your memory usage out of the water for big result sets so there
goes that idea anyway!)..
--
Postgresql & php tutorials
http://www.designmagick.com/