Re: psql: question - Mailing list pgsql-sql

From Josh Berkus
Subject Re: psql: question
Date
Msg-id web-1453665@davinci.ethosmedia.com
Whole thread Raw
Responses Re: psql: question
List pgsql-sql
Chuck,

Please cc: one of the Postgres lists when you query me.  If you're
getting Q&A support just from me, I'll have to start charging you!

> Trying to work out details of how to let users page back and forth
> among a multi-page list of results.
> 
> Problem: I need to know the total number of tuples the query would
> return in order to decide if there are more to display.
> 
> 1) Use CURSOR and FETCH
> 
> $res= $con->exec(
>  "BEGIN WORK;
>  DECLARE gene_result CURSOR FOR
>  SELECT blah blah
>  ORDER BY blah;
>  FETCH $offset IN gene_result
>  ");
> 
> $result->ntuple: returns only the number set by $offset, not TOTAL
> for query.
> 
> 2) use LIMIT OFFSET
> 
> same problem,
> $result->ntuple: returns only the number set by LIMIT, OFFSET, not
> TOTAL for query.
> 
> So there has to be a way to glean both the TOTAL and the SUBSET
> returned?
> 
> Searching the postgresql archives obviously can deal with this
> http://archives.postgresql.org/pgsql-sql/
> 'Displaying documents 11-20 of total 243 found.'

Personally, I don't know any way to do this without running the query
twice.  

Least inefficient approach:  If your interface allows seperating the
SELECT clause from the rest of the query, then run first:

SELECT COUNT(*)
FROM rest-of-query ...

Check that value.  If it's 0, then return a "no records found" message
to the user.  Otherwise, run the query broken into LIMIT and OFFSET
blocks.

More inefficient approach:  if the way the query is being generated
does not allow you to break off the SELECT clause, then you need to
subselect a count:

SELECT COUNT(*) FROM ( SELECT blah FROM rest_of_query) query_count;

This will also give you a count, buut be slightly slower than the
above.

If anybody knows a way to get a count *without* running the query
twice, I'd be glad to hear it!

-Josh Berkus






pgsql-sql by date:

Previous
From: Holger Marzen
Date:
Subject: Re: [GENERAL] Performance issues with compaq server
Next
From: Jean-Luc Lachance
Date:
Subject: Performance on update from join