Re: How many rows if limit wasn't present?

From: Victor Spång Arthursson <victor(at)tosti(dot)dk>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: How many rows if limit wasn't present?
Date: 2005-05-13 13:21:51
Message-ID: 9072F7D6-DA64-4570-9F4B-DA95ADB97C96@tosti.dk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


13 maj 2005 kl. 14.45 skrev Richard Huxton:

> Richard Huxton wrote:
>
>> Victor Spång Arthursson wrote:
>>
>>> Ciao!
>>>
>>> Is it possible to get the number of rows that would have been
>>> returned if the LIMIT-clause weren't present in some way after
>>> the query was run?
>>>
>>> Reason for asking is that I have a really big chunk of SQL,
>>> which takes time to execute, and whoose result is paginated
>>> using a LIMIT- clause, and to get the actual result (before
>>> pagination) I have to run the query one more time… Big slow down…
>>>
>> No. Standard procedure here is to select the results to a
>> temporary table, or application-level cache etc.
>>
>
> Just to expand a bit on my own reply - PG will stop processing once
> it hits the LIMIT. Sometimes it still has to gather all the rows
> first (e.g. if you ask for the top 10 selling items this month, it
> needs to calculate all the sales before limiting).
>
> Also - you don't need to cache the full result. Sometimes it might
> make sense to cache just some keys and associated scores and fetch
> descriptive columns later if required.

Figured so my self and changed the code from pg_fetch_all to
pg_fetch_assoc, and then I just fetched the 10 or so I needed…

Speed up with around 60% :D

Now the big question is how to understand the EXPLAIN numbers…

Ciao!

/.v

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Magnus Hagander 2005-05-13 14:11:12 Re: windows 1252 encoding
Previous Message Daniel Schuchardt 2005-05-13 13:11:00 Re: Delphi 2005, Postgresql, ZEOS & optimistic locking