Thread: Query plan optimization for CHECK NO INHERIT and single table?

Query plan optimization for CHECK NO INHERIT and single table?

From
Matthias
Date:
Hey,

I tried out the new CHECK NO INHERIT feature for inherited tables.
There seems to be an opportunity to generate slightly better query
plans sometimes. E.g. when I do

SELECT * FROM base WHERE partition_id = 3

and there exists only one child table for which partition_id = 3 is
true I guess the query plan could just do a seq/index/whatever scan on
that table. Right now the query plan has an intermediate "Append"
node. This seems only useful if the results of multiple child tables
would need to be included.

-Matthias



Re: Query plan optimization for CHECK NO INHERIT and single table?

From
Robert Haas
Date:
On Thu, Aug 30, 2012 at 2:00 AM, Matthias <nitrogenycs@gmail.com> wrote:
> Hey,
>
> I tried out the new CHECK NO INHERIT feature for inherited tables.
> There seems to be an opportunity to generate slightly better query
> plans sometimes. E.g. when I do
>
> SELECT * FROM base WHERE partition_id = 3
>
> and there exists only one child table for which partition_id = 3 is
> true I guess the query plan could just do a seq/index/whatever scan on
> that table. Right now the query plan has an intermediate "Append"
> node. This seems only useful if the results of multiple child tables
> would need to be included.

I think it's needed to translate between the child's set of attribute
numbers and their parent's set of attribute numbers - that is, the
child could have the columns in a different order, or could have extra
ones.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company