pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Matteo Beccati <php@beccati.com>
To: pgsql-performance@postgresql.org
Subject: ORDER BY and LIMIT not propagated on inherited tables / UNIONs
Date: Fri, 02 Sep 2005 12:20:57 +0200
Message-ID: <43182789.4070307@beccati.com> (raw)

Hi,

I'm using inherited tables to partition some data which can grow very 
large. Recently I discovered that a simple query that on a regular table 
would use an index was instead using seq scans (70s vs a guessed 2s).
The well known query is:

SELECT foo FROM bar ORDER BY foo DESC LIMIT 1

(The same applies for SELECT MIN(foo) FROM bar using 8.1)


The query plan generated when running the query on a table which has 
inheritance forces the planner to choose a seq_scan for each table. 
Wouldn't be a good thing to also promote ORDER BYs and LIMITs to each 
subscan (like WHERE does)?

I needed a quick solution, so I wrote a function which looks each 
inherited table separately and my problem is partially solved, but I 
think that a (hopefully) little change in the optimizer could be advisable.

Attached are some EXPLAIN ANALYZE outputs of my suggestion.


Best regards
--
Matteo Beccati
http://phpadsnew.com
http://phppgads.com

Attachments:

  order_limit_inheritance.txt (plain/text, 12.0K) download

view thread (9+ messages)  latest in thread

Message-ID: <43182789.4070307@beccati.com>
Permalink:  ../43182789.4070307@beccati.com/
Also on:    postgresql.org/message-id/43182789.4070307@beccati.com

 · 

reply

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: php@beccati.com
  Subject: Re: ORDER BY and LIMIT not propagated on inherited tables / UNIONs
  In-Reply-To: <43182789.4070307@beccati.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