在postgresql 9.2中,可以提示优化用于分区吗?

时间:2012-06-15 06:35:03

标签: sql postgresql database-partitioning

在一个简单的分区表中:

-- note: no records stored in base, only inheritors of base
create table base(
   base_id       bigint,
   base_tp       char(3) not null,
   ... );

create table base_abc(
   base_id       bigserial   primary key,
   base_tp       default 'abc'
                 check( base_tp = 'abc' ),
   ...
) inherits( base );


create table base_efg(
   base_id       bigserial   primary key,
   base_tp       default 'efg'
                 check( base_tp = 'efg' ),
   ...
) inherits( base );

如果查询中的where子句使用base_tp,例如

select * from base where ... and base_tp='abc'

将在9.2以下的情况下优化查询以仅选择表格base_abc,还是像目前一​​样查询basebase_abcbase_efg?< / p>

1 个答案:

答案 0 :(得分:3)

嗯,可以通过constraint_exclusion配置选项设置此行为。如果它是on,则只访问具有匹配约束的分区。但是你应该小心,并选择partition来避免重大的性能损失。考虑到分区表,它也是一样的,但是其他表不会受到影响。

查看其documentation