Re: [PERFORM] Find original number of rows before applied LIMIT/OFFSET? - Mailing list pgsql-general

From Greg Stark
Subject Re: [PERFORM] Find original number of rows before applied LIMIT/OFFSET?
Date
Msg-id 873carwnqn.fsf@stark.dyndns.tv
Whole thread Raw
In response to Find original number of rows before applied LIMIT/OFFSET?  ("D. Dante Lorenso" <dante@lorenso.com>)
List pgsql-general
"D. Dante Lorenso" <dante@lorenso.com> writes:

> Any thoughts?  Sure, the PHP function I'm using above 'works', but is it
> the most efficient?  I hope I'm not actually pulling all 100,000 records
> across the wire when I only intend to show 10 at a time.  See what I'm
> getting at?

I tend to do it using a separate select count(*). My thinking is that the
count(*) query can be simplified and exclude things like the ORDER BY clause
and any select list entries that require extra work. It can often even exclude
whole joins.

By doing a separate query I can do that extra work only for the rows that i
actually need for display. Hopefully using an index to pull up those rows. And
do the count(*) in the most efficient way possible, probably a sequential scan
with no joins for foreign keys etc.

But I suspect the two methods both work out to suck about equally.

--
greg

pgsql-general by date:

Previous
From: Együd Csaba
Date:
Subject: Re: Query performance question on a large table
Next
From: Tom Lane
Date:
Subject: Re: VACUUM VERBOSE ANALYZE does not work on 7.4.1