oracle创建分区表

在项目中,遇到数据量多的时候,开始考虑使用年份表,不同年份创建一个年份表,后期需求改动,需要实现跨年查询操作,由于数据量大,跨年份查询涉及多表关联,查询起来速度较慢。所以考虑到使用分区表的方式,按照年份分区操作。

一、分区为number类型

如下,是按照年份分区的,其中年份字段是number类型,interval 设置为‘1’,即以‘1’为单位进行分区,默认先创建一个

CREATE TABLE testzone1
    (
    id NUMBER(10) NOT NULL PRIMARY KEY,
    pid number(10),
    attributeNo varchar2(255),
    attributeName varchar2(255),
    attributeValue varchar2(4000),
    compactYear number(10)
    )  PARTITION BY range (compactYear) interval (1)
   (
     PARTITION p3 VALUES less than(2017)
   );

表创建完成后给表创建自动增长的sequence:

CREATE SEQUENCE SEQ_testzone1 INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE;

此时生成一个分区,打开plsql可以看到,出现了分区


接下来插入一条数据,执行如下sql,

insert into testzone1 (id,pid,attributeNo,attributename,compactyear) values(SEQ_testzone1.Nextval,1,'1','1',2016);

注意这里的年份写的是‘2016’,一开始我以为会在Partitions增加一条分区记录,查看表结构时发现并没有增加分区记录,仍然是只有一个‘2017’的分区。

接下来再插入一条数据,此时把年份改为‘2017’,执行如下sql,

insert into testzone1 (id,pid,attributeNo,attributename,compactyear) values(SEQ_testzone1.Nextval,1,'2','2',2017);

再次查看表结构,此时系统默认创建了一条分区记录:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值