如何在oracle中的单个select语句中包含多个分区

时间:2014-06-04 02:01:49

标签: oracle partition

create table agg_summary (period date, lvl_id number);

已为lvl_id创建了分区,其中包含1,2,3作为每个ID的单独分区。

如何访问agg_summary以分别拥有1和2?

1 个答案:

答案 0 :(得分:1)

至少有三种方法可以从特定分区中选择数据。有关语法的详细说明,请参阅the manual

create table agg_summary (period date, lvl_id number)
partition by list (lvl_id)
(
    partition p1 values (1),
    partition p2 values (2),
    partition p3 values (3)
);

--#1: Normal predicate:
select * from agg_summary where lvl_id in (1,2);

--#2: Partition_extended_name:
select * from agg_summary partition (p1)
union all
select * from agg_summary partition (p2);

--#3: Partition_excension_clause:
select * from agg_summary partition for (1)
union all
select * from agg_summary partition for (2);

99.9%的时间选项#1应该足够了。 Oracle将自动确定使用哪些分区并将正确修剪。对于修剪无法正常工作的情况,或根据分区名称或密钥选择更合理的情况,选项#2或#3应该有效。