您的位置:首页 > 其它

按照时间,每天分区;按照数字,200000一个分区

2016-10-07 19:21 253 查看
按照时间,每天分区

create table test_p(id number,createtime date)

partition by range(createtime) interval(numtodsinterval(1,'day')) store in (users)

(

partition test_p_p1 values less than(to_date('20140110','yyyymmdd'))

);

create index index_test_p_id on test_p(id) local;

create index index_test_p_createtime test_p(createtime) local;

 

 

按照数字,200000一个分区

create table test_p(id number,createtime date)

partition by range(id) interval(200000) store in (users)

(

partition test_p_p1 values less than(200000)

);

create index index_test_p_id on test_p(id) local;

create index index_test_p_createtime test_p(createtime) local;

  interval-partitioned
table(间隔分区表),即由oracle数据库在间隔分区表上自动创建分区,无需再自己写存储过程或其他脚本来实现自动创建分区了。当然,间隔分区表的分区指定列只能为表的单个列,且该列只能为NUMBER或DATE类型。 间隔分区必须是基于范围分区,可以只是范围分区,也可以是组合分区如RANGE-LIST、RANGE-HASH等。

EXP
创建按月间隔分区表
CREATE TABLE tab_part_month

(

  t_id NUMBER,

  t_date DATE,

  t_txt VARCHAR2(20)

)

PARTITION BY RANGE(t_date)
INTERVAL (numtoyminterval(1,'month'))

(

  PARTITION p0 VALUES LESS THAN(to_date('20080101','yyyymmdd')),

  PARTITION p1 VALUES LESS THAN(to_date('20090101','yyyymmdd'))

);

INSERT INTO tab_part_month

VALUES(1,to_date('20070301','yyyymmdd'),'hihi');
INSERT INTO tab_part_month

VALUES(1,to_date('20080301','yyyymmdd'),'hihi');
INSERT INTO tab_part_month

VALUES(1,to_date('20100301','yyyymmdd'),'hihi');

备注:这是一个按月间隔分区表,分区列为t_date日期列,INTERVAL
(numtoyminterval(1,'month'))即为间隔分区的语句,数字1指定间隔频率,此时为按月分区,如果改为3则为每3个月分一个区,按日间隔分区将其改以下语句:INTERVAL (Numtodsinterval(10,'DAY'))。在上面语句中,CREATE语句中创建了p0、p1分区,在执行完前两条INSERT语句后该表分区并未增加,直到插入第三条语句后数据库自动增加一个新分区。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐