原文地址:https://www.cnblogs.com/gemine/p/9011898.html
oracle 的 Partition
分区表概念:
1、当一个表中的数据量达到一定程度后,查询速度会变慢,影响应用的性能,此时可以考虑进行表分区,分区后逻辑上还是一张表,只是将数据在物理上存放到多个表空间,这样查询时不用每次都整表扫描。
注意事项:
1、已经存在的表没有方法可以直接转化为分区表;
2、不在分区字段上建立分区索引,在别的字段上建立索引相当于全局索引。效率低
3、11g 中的分区技术在易用性和可扩展性上再次得到了增强
numtoyminterval函数——数字转换函数
语法:NUMTOYMINTERVAL ( n , 'char_expr' )
n:步长,每隔n个日期
char_expr:日期描述,可以是YEAR和MONTH;
分区有自动分区,预先分区
按天、周、月、年自动分区:
numtoyminterval(1, 'year')
numtoyminterval(1, 'month')
NUMTODSINTERVAL(1, 'day')
NUMTODSINTERVAL (7, 'day')
例如按月自动分区:
CREAT TABLE TABLE1 ( TABLE_ID NUMBER(8), SUB_DATE DATE, VALUE NUMBER(8) ) PARTITION BY RANGE(SUB_DATE) INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) ( PARTITION P1 VALUES LESS THAN(TO_DATE('2014-05-01','YYYY-MM-DD')) );
非自动分区:
partition by range (DATE_TIME) ( partition KMS_ANALYSIS_DATA_2016Q1 values less than (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TBS_GTOS pctfree 10 initrans 1 maxtrans 255 storage ( initial 8M next 1M minextents 1 maxextents unlimited ),)