sql >> Databasteknik >  >> RDS >> Oracle

Oracle-partitionering efter ID och underpartition efter DATUM med intervall

Du kan skapa ett RANGE INTERVAL partition på datum och sedan LIST eller RANGE underpartition på den. Skulle vara så här:

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') );

Observera att för den andra lösningen är antalet (dvs. ID:n) på kunden fixat. Om du får nya kunder måste du ändra tabellen och modifiera SUBPARTITIONSMALLEN därefter.

Månatliga partitioner kommer att skapas automatiskt av Oracle när nya värden infogas eller uppdateras.




  1. Vad är fördelen med zerofill i MySQL?

  2. Deadlock med SELECT ... FÖR UPPDATERING i MySQL

  3. Varning:mysqli_connect():MySQL-servern har försvunnit

  4. MYSQL - Hämta alla poster som har mer än 1 post för samma id