Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So schließen Sie mehr als eine Partition in eine einzelne Select-Anweisung in Oracle ein

Es gibt mindestens drei Möglichkeiten, Daten aus bestimmten Partitionen auszuwählen. Siehe das Handbuch für eine ausführliche Beschreibung der Syntax.

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 % der Zeit sollte Option 1 ausreichen. Oracle bestimmt automatisch, welche Partitionen verwendet werden, und bereinigt sie korrekt. In Fällen, in denen das Pruning nicht korrekt funktioniert oder es logischer ist, basierend auf dem Partitionsnamen oder -schlüssel auszuwählen, sollten die Optionen Nr. 2 oder Nr. 3 funktionieren.