Re: Counting all results before LIMIT

From: Mike Christensen <mike(at)kitchenpc(dot)com>
To: P Gouv <kadmos(at)gmail(dot)com>
Cc: Moshe Jacobson <moshe(at)neadwerx(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Counting all results before LIMIT
Date: 2012-10-05 15:17:52
Message-ID: CABs1bs07p6UB3oV=Da3C7+SEB80WnEyHkEAOJ9G6t4m4Syj4pw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

You could use a windowing function. Something like:

SELECT x, y, z, COUNT(*) OVER()
FROM Foo
LIMIT 50;

On Fri, Oct 5, 2012 at 8:02 AM, P Gouv <kadmos(at)gmail(dot)com> wrote:

> You cant. There is an article about count performance. Generally its slow
> but latest version 9.2 i think supports index for count under some
> condition.But 300 isnt that much that you should worry.Another modern
> solution is to not count results just add one more at limit to see if there
> is next page.
>
>
> On Fri, Oct 5, 2012 at 5:29 PM, Moshe Jacobson <moshe(at)neadwerx(dot)com> wrote:
>
>> We have a PHP web application that pulls results from the database and
>> paginates them.
>> We show e.g. "1-50 of 300" so the user knows how many total results there
>> are, and which ones are currently being displayed.
>> To achieve this, we use a query with LIMIT...OFFSET to get the displayed
>> results, and we do another identical query using count(*) to get the total
>> count.
>> Is there a more efficient way to do this that does not require us to do
>> two queries? I just feel that it's a waste of resources the way we do it.
>>
>> Thanks!
>>
>> --
>> Moshe Jacobson
>> Nead Werx, Inc. | Senior Systems Engineer
>> 2323 Cumberland Parkway, Suite 201 | Atlanta, GA 30339
>> moshe(at)neadwerx(dot)com | www.neadwerx.com
>>
>>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Phoenix Kiula 2012-10-05 15:37:26 Re: [Pgbouncer-general] Again, problem with pgbouncer
Previous Message Ivan Voras 2012-10-05 15:13:33 Re: Re: What's faster? BEGIN ... EXCEPTION or CREATE TEMP TABLE IF NOT EXISTS?