oracle組合分區
由於Interval分區是針對range的,11g-12.1版本,目前只有Interval—*一共3種Interval的復合分區
range-list方法:
partition by range (updatetime)
interval (numtodsinterval(1,‘day‘))
subpartition by list(PSNCODE)
SUBPARTITION TEMPLATE(
SUBPARTITION REGION_1 values(‘038716‘),
SUBPARTITION REGION_2 values(‘270719‘) )
(partition p1 values less than(to_date(‘2014-05-01‘,‘yyyy-mm-dd‘)))
註意:每個分區有2個子分區,分區的子分區需要手動添加
Interval分區目前測試,只支持range先分區的方式
range-hash方法:每個分區10個子hash分區(可以指定每個子分區到單獨的表空間)
partition by range (updatetime)
interval(numtodsinterval(1,‘day‘))
subpartition by hash(PSNCODE)
SUBPARTITION template ( SUBPARTITION p1 TABLESPACE ts1 , SUBPARTITION p2 TABLESPACE ts2 , SUBPARTITION p3 TABLESPACE ts3 , SUBPARTITION P4 TABLESPACE ts4 )
(partition p1 values less than(to_date(‘2014-05-01‘,‘yyyy-mm-dd‘)))
註意:這種方式可以實現完全自動的分區,非常適合自增長特性的10位數以上的大表
hash分區最好是2的次方個,不然數據會分布不均
range-range方法:子分區需要手動添加,這種分區需要一般比較少見
PARTITION BY RANGE (time_id)
INTERVAL (NUMTODSINTERVAL(1,‘DAY‘))
SUBPARTITION BY RANGE(amount_sold)
SUBPARTITION TEMPLATE
( SUBPARTITION p_low VALUES LESS THAN (1000)
, SUBPARTITION p_medium VALUES LESS THAN (4000)
, SUBPARTITION p_high VALUES LESS THAN (8000)
, SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)
)
(PARTITION before_2000 VALUES LESS THAN (TO_DATE(‘01-JAN-2000‘,‘dd-MON-yyyy‘)) )
oracle組合分區