From: Richard Broersma <richard.broersma@gmail.com>
To: Colin Copeland <copelco@caktusgroup.com>
Cc: pgsql-performance@postgresql.org, "team@caktusgroup.com s" <team@caktusgroup.com>
Subject: Re: query planner and scanning methods
Date: Tue, 23 Sep 2008 15:57:31 -0700
Message-ID: <396486430809231557j25541f06q845e017553fc44d2@mail.gmail.com> (raw)
In-Reply-To: <6D0802D6-371A-470C-AB1C-3CC20E543061@caktusgroup.com>
References: <8559E6C3-47ED-40E4-99E6-C56B322310DA@caktusgroup.com>
<396486430809231507t46edf20fxab469bedbd78e8cc@mail.gmail.com>
<6D0802D6-371A-470C-AB1C-3CC20E543061@caktusgroup.com>
On Tue, Sep 23, 2008 at 3:25 PM, Colin Copeland <copelco@caktusgroup.com> wrote:
>>> dimension=# EXPLAIN ANALYZE
>>> SELECT DISTINCT ON ("dimension_book"."call")
>>> "dimension_book"."title"
>>> FROM "dimension_book"
>>> INNER JOIN "dimension_library_books"
>>> ON ("dimension_book"."id" = "dimension_library_books"."book_id")
>>> WHERE ("dimension_book"."call" >= 'PA0000'
>>> AND "dimension_library_books"."library_id" IN (12,15,20))
>>> ORDER BY "dimension_book"."call" ASC
>>> LIMIT 10 OFFSET 100;
> Yes, I was thinking about this too. How would one generate a list of pages
> from this, though? I can't predict values of dimension_book.call (it's not a
> serial number).
I can think of one very ugly way to get the first record for each
page. Hopefully, you will not need to generate these list pages very
often. Also, you could probably refine the following query in a
couple of ways to improve performance.
SELECT A."dimension_book"."call", SUM( B."dimension_book"."call" ) AS
OrderedRowNbr
FROM ( your_above_query_without_the_limits ) AS A
INNER JOIN ( your_above_query_without_the_limits ) AS B
ON A."dimension_book"."call" >= B."dimension_book"."call"
ORDER BY A."dimension_book"."call"
HAVING SUM( A."dimension_book"."call" ) % 10 = 0;
--
Regards,
Richard Broersma Jr.
Visit the Los Angeles PostgreSQL Users Group (LAPUG)
http://pugs.postgresql.org/lapug
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: richard.broersma@gmail.com, copelco@caktusgroup.com, team@caktusgroup.com
Subject: Re: query planner and scanning methods
In-Reply-To: <396486430809231557j25541f06q845e017553fc44d2@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox