oracle创建包含子分区的分区

之前做零售内评项目的时候,由于要统计了很多的字段的近12月均值,近6月均值,等等,所以把每个指标都按月打平到一个表里了。
形成了
指标名称 月末指标,1月前月末指标,2月前月末指标,。。。12月前月末指标等
这样的话,就把各个指标名称都放到了一个表里,比如余额,逾期金额,实际还款总金额,实际还款总金额占应还总金额比例,逾期天数等。
由于数据量也不少,大概有十几万,所以就用到了一个subpartition的概念。

CREATE TABLE XXX(
COL_NAME COL_TYPE,...)
PARTITION BY LIST(STAT_DT)
SUBPARTITION BY LIST(INDEX_NAME)
SUBPARTITION TEMPLATE
(
SUBPARTITION P_BALANCE VALUES('BALANCE')
,SUBPARTITION P_OVERDUE_BAL VALUES('OVERDUE_BAL')
,...(PARTITION BY P_19000101 VALUES (DATE'1900-01-01'))
;

这种方式特殊在使用了一个subpartition template,就是说以后只需要简历Partition之后,会自动在partition里面简历template所包含的subpartition。
所以只需要写

ALTER TABLE XXX ADD PARTITION P_20200101 VALUES (DATE'2020-01-01')

即可创建一个包含了n个子分区的分区了。
同理,truncate,drop也是一样的。
在对数据的使用上。
需要用

SELECT * FROM XXX SUBPARTITION (P_19000101_P_BALANCE) ;

的样式来查询。
partitionname_subpartitionname

你可能感兴趣的:(oracle)