众所周知,Oracle的Partition可以为大表查询降低IO开销从而带来显著的性能提升,对于一个事务表,我们通常用时间戳来进行分区。理论上来说,表的大小可以基本无限制的延伸,但是前提是需要要启动一个定时任务去新增加分区从而让所有时间的记录都能划分到某个时间段的区域,一直觉得这样挺繁琐的,Oracle就应该具备这样一个可以动态增加分区的功能,好在在新版本的12c增加了 Interval-Partition.
下面的例子说明CUSTOMER表以月份为单位进行从01/01/2013开始分区。月份增加了就会自动创建分区,Cool!
CREATE TABLE CUSTOMER
(SNAPSHOT_DK NUMBER(10) NOT NULL,
SNAPSHOT_DATE DATE,
CREATED_ON_DK NUMBER(15),
UPDATED_BY NVARCHAR2(18) NOT NULL
)
PARTITION BY RANGE (SNAPSHOT_DATE)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(PARTITION P_FIRST VALUES LESS THAN (TO_DATE('01/01/2013','DD/MM/YYYY')));