Re: query planner and scanning methods

Поиск
Список
Период
Сортировка
От Richard Broersma
Тема Re: query planner and scanning methods
Дата
Msg-id 396486430809231557j25541f06q845e017553fc44d2@mail.gmail.com
обсуждение исходный текст
Ответ на Re: query planner and scanning methods  (Colin Copeland <copelco@caktusgroup.com>)
Ответы Re: query planner and scanning methods
Список pgsql-performance
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

В списке pgsql-performance по дате отправления:

Предыдущее
От: Colin Copeland
Дата:
Сообщение: Re: query planner and scanning methods
Следующее
От: Einars
Дата:
Сообщение: Chaotically weird execution plan