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
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 |