达梦数据库间隔分区应用(interval)

达梦数据库间隔分区应用(interval)

oracle11g中引入了间隔分区的功能,通过该功能,可以在输入相应分区的数据时自动创建相应的分区。
在达梦中我们也可以使用间隔分区,不过需要注意的是达梦中的间隔分区使用有以下限制:
1.仅支持一级范围分区创建间隔分区;
2.只能有一个分区列,且分区列类型为日期或数值;
3.对间隔分区进行SPLIT,只能在间隔范围内进行操作;
4.被SPLIT/MERGE的分区,其左侧分区不再进行自动创建;
5.不相邻的间隔的分区,不能MERGE;
6.表定义不能包含MAXVALUE分区;
7.不允许新增分区;
8.不能删除起始间隔分区;
9.间隔分区表定义语句显示到起始间隔分区为止;
10.自动生成的间隔分区,均不包含边界值;
11.间隔表达式只能为常量或日期间隔函数。日期间隔函数为:NUMTOYMINTERVALNUMTODSINTERVAL;数值常量可以为整型、DEC 类型;
12.MPP 下不支持间隔分区表。

例子:
1、按年/月创建分区,使用NUMTOYMINTERVAL函数:
CREATE TABLE tinterval
 (
  employeeid         NUMBER,
employeename       VARCHAR2(20),
 birthday            DATE    
)

PARTITION BY RANGE(birthday)

INTERVAL (NUMTOYMINTERVAL(1,'year'))
(
PARTITION partition2014 VALUES LESS THAN(todate('2019-01-01','yyyy-mm-dd')),
  PARTITION partition2015 VALUES LESS THAN(todate('2020-01-02','yyyy-mm-dd'))
);

2、按日创建分区,使用NUMTODSINTERVAL函数:
这里需要注意:
如果在达梦中没有设置COMPATIBLE_MODE参数为2,即兼容oracle的模式,那么创建按日分区时如果分区列使用date类型会出现报错:

使用timestamp类型则不会报错:

但是为了兼容oracle,这里我们还是建议修改COMPATIBLE_MODE参数,然后就可以在date类型列上按照天来分区了:
create table sales
 (
    salesid    number,
    salesdt    date
    )

partition by range (salesdt)

INTERVAL (NUMTODSINTERVAL(1,'day'))
(
partition p090101 values less than (todate('2020-06-30','yyyy-mm-dd'))
);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值