sql >> Database >  >> RDS >> Oracle

Oracle-partitie op ID en subpartitie op DATE met interval

U kunt een RANGE INTERVAL . maken partitie op datum en dan LIST of RANGE subpartitie erop. Zou zo zijn:

CREATE TABLE MY_PART_TABLE
(
  CUSTOMER_ID                      NUMBER             NOT NULL,
  THE_DATE                 TIMESTAMP(0) NOT NULL,
  OTHER_COLUMNS NUMBER
)
PARTITION BY RANGE (THE_DATE) INTERVAL (INTERVAL '1' MONTH)
    SUBPARTITION BY RANGE (CUSTOMER_ID)
        SUBPARTITION TEMPLATE (
        SUBPARTITION CUSTOMER_GROUP_1 VALUES LESS THAN (10),
        SUBPARTITION CUSTOMER_GROUP_2 VALUES LESS THAN (20),
        SUBPARTITION CUSTOMER_GROUP_3 VALUES LESS THAN (30),
        SUBPARTITION CUSTOMER_GROUP_4 VALUES LESS THAN (40),
        SUBPARTITION CUSTOMER_GROUP_5 VALUES LESS THAN (MAXVALUE)
        )
(PARTITION VALUES LESS THAN ( TIMESTAMP '2015-01-01 00:00:00') );



CREATE TABLE MY_PART_TABLE
(
  CUSTOMER_ID                      NUMBER             NOT NULL,
  THE_DATE                 TIMESTAMP(0) NOT NULL,
  OTHER_COLUMNS NUMBER
)
PARTITION BY RANGE (THE_DATE) INTERVAL (INTERVAL '1' MONTH)
    SUBPARTITION BY LIST (CUSTOMER_ID)
        SUBPARTITION TEMPLATE (
        SUBPARTITION CUSTOMER_1 VALUES (1),
        SUBPARTITION CUSTOMER_2 VALUES (2),
        SUBPARTITION CUSTOMER_3_to_6 VALUES (3,4,5,6),
        SUBPARTITION CUSTOMER_7 VALUES (7)
        )
(PARTITION VALUES LESS THAN ( TIMESTAMP '2015-01-01 00:00:00') );

Let op, voor de tweede oplossing is het aantal (d.w.z. ID's) van de klant vast. Als u nieuwe klanten krijgt, moet u de tabel wijzigen en de SUBPARTITION-TEMPLATE dienovereenkomstig aanpassen.

Maandelijkse partities worden automatisch aangemaakt door Oracle wanneer nieuwe waarden worden ingevoegd of bijgewerkt.




  1. SQL Server opgeslagen procedure retourcode eigenaardigheid

  2. nvarchar(max) vs NText

  3. Verwijderen uit twee tabellen in één query

  4. Hoe kan ik deze dynamische update in Oracle uitvoeren?