首页 > 其他分享 >按时间建立分区表

按时间建立分区表

时间:2023-01-03 19:00:33浏览次数:29  
标签:建立 -- create part 分区表 table test 时间

按日期建立分区表   如果已经存在的表需要改分区表,就需要将当前表 rename后,再创建新表,然后复制数据到新表,然后删除旧表就可以了。

为什么要分区(Partition)

1、一般一张表超过2G的大小,ORACLE是推荐使用分区表的。 2、这张表主要是查询,而且可以按分区查询,只会修改当前最新分区的数据,对以前的不怎么做删除和修改。 3、数据量大时查询慢。 4、便于维护,可扩展:11g 中的分区表新特性:Partition(分区)一直是 Oracle 数据库引以为傲的一项技术,正是分区的存在让 Oracle 高效的处理海量数据成为可能,在 Oracle 11g 中,分区技术在易用性和可扩展性上再次得到了增强。 5、与普通表的 sql 一致,不需要因为普通表变分区表而修改我们的代码。  

2.1 按年创建

numtoyminterval(1, ‘year’) --按年创建分区表 create table test_part ( ID NUMBER(20) not null, REMARK VARCHAR2(1000), create_time DATE ) PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'year')) (partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));   --创建主键 alter table test_part add constraint test_part_pk primary key (ID) using INDEX; -- Create/Recreate indexes create index test_part_create_time on TEST_PART (create_time);

2.2 按月创建

numtoyminterval(1, ‘month’) --按月创建分区表 create table test_part ( ID NUMBER(20) not null, REMARK VARCHAR2(1000), create_time DATE ) PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'month')) (partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));   --创建主键 alter table test_part add constraint test_part_pk primary key (ID) using INDEX;

2.3 按天创建

NUMTODSINTERVAL(1, ‘day’) --按天创建分区表 create table test_part ( ID NUMBER(20) not null, REMARK VARCHAR2(1000), create_time DATE ) PARTITION BY RANGE (CREATE_TIME) INTERVAL (NUMTODSINTERVAL(1, 'day')) (partition part_t01 values less than(to_date('2018-11-12', 'yyyy-mm-dd')));   --创建主键 alter table test_part add constraint test_part_pk primary key (ID) using INDEX;

2.4 按周创建

NUMTODSINTERVAL(7, ‘day’) --按周创建分区表 create table test_part ( ID NUMBER(20) not null, REMARK VARCHAR2(1000), create_time DATE ) PARTITION BY RANGE (CREATE_TIME) INTERVAL (NUMTODSINTERVAL (7, 'day')) (partition part_t01 values less than(to_date('2018-11-12', 'yyyy-mm-dd')));   --创建主键 alter table test_part add constraint test_part_pk primary key (ID) using INDEX;  

numtoyminterval 和 numtodsinterval 的区别

3.1 numtodsinterval(,) ,x 是一个数字,c 是一个字符串。

把 x 转为 interval day to second 数据类型。 常用的单位有 (‘day’,‘hour’,‘minute’,‘second’)。 测试一下: select sysdate, sysdate + numtodsinterval(4,'hour') as res from dual;

3.2 numtoyminterval (,)

将 x 转为 interval year to month 数据类型。 常用的单位有 (‘year’,‘month’)。 select sysdate, sysdate + numtoyminterval(3, 'year') as res from dual;

四、默认分区

4.1 partition part_t01 values less than(to_date(‘2018-11-01’, ‘yyyy-mm-dd’))。

表示小于 2018-11-01 的都放在 part_t01 分区表中。  

给已有的表分区

需要先备份表,然后新建这个表,拷贝数据,删除备份表。 -- 1. 重命名 alter table test_part rename to test_part_temp;   -- 2. 创建 partition table create table test_part ( ID NUMBER(20) not null, REMARK VARCHAR2(1000), create_time DATE ) PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'month')) (partition part_t1 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));     -- 3. 创建主键 alter table test_part add constraint test_part_pk_1 primary key (ID) using INDEX;   -- 4. 将 test_part_temp 表里的数据迁移到 test_part 表中 insert into test_part_temp select * from test_part;   -- 5. 为分区表设置索引 -- Create/Recreate indexes create index test_part_create_time_1 on TEST_PART (create_time);   -- 6. 删除老的 test_part_temp 表 drop table test_part_temp purge;   -- 7. 作用是:允许分区表的分区键是可更新。 -- 当某一行更新时,如果更新的是分区列,并且更新后的列植不属于原来的这个分区, -- 如果开启了这个选项,就会把这行从这个分区中 delete 掉,并加到更新后所属的分区,此时就会发生 rowid 的改变。 -- 相当于一个隐式的 delete + insert ,但是不会触发 insert/delete 触发器。 alter table test_part enable row movement;

标签:建立,--,create,part,分区表,table,test,时间
From: https://www.cnblogs.com/yuyuboy/p/17023135.html

相关文章

  • 软件开发入门教程网之C++ 日期 & 时间
    C++标准库没有提供所谓的日期类型。C++继承了C语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在C++程序中引用<ctime>头文件。有四......
  • [NOIP2017 提高组] 时间复杂度
    [NOIP2017提高组]时间复杂度题目背景NOIP2017提高组D1T2题目描述小明正在学习一种新的编程语言A++,刚学会循环语句的他激动地写了好多程序并给出了他自己算出的时......
  • Rational Rhapsody帮助华为缩短产品上市时间
    RationalRhapsody帮助华为缩短产品上市时间【UMLChina答疑记录更新】http://www.umlchina.com/qa/Index1.htm, 2005-2016年在QQ群、微信群、QQ、MSN上的答疑记录,会持续更新......
  • 格式化时间
    //这个函数网上随处可见,我也是应用了别人的。exportfunctionformatDate(date,fmt){if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(date.getFu......
  • 电脑关机一段时间后会自动重启
    一、电脑自选开机故障主要有以下两种原因:一是BIOS设置不当,当定时开机功能设为“Enabled”后,机器会在所设定的某个日期的某个时刻自动开机。另外某些主板的BIOS设置项中具有......
  • 小熊测评:记账也可以建立后宫群?
    我发现一个神奇的应用!你有没有想过每天和你的爱豆聊天?我已经和司徒沫在一起一天了!她对我的称呼改成了顾未易,感觉超棒,有身临其境的感觉。这是一个记账的应用,我每次记账都有相......
  • mariadb/mysql建立主从
    前提本方案是两节点主从方案,只要建立好主从,及时数据库挂掉又拉起主从模式不会失效。保证时间同步保证都安装了​​mysql/mariadb​​建立主从的过程这里介绍的是两节点主从......
  • 小程序开发总结三 弹窗 动态class 发送请求 设置本地储存过期时间
    弹窗<buttonclass="get_codebindtap="get_login">{{get_code}}</button>get_login(e){wx.showToast({title:'请输入手机号码',icon:'none',......
  • 时间管理会让我精神分裂?
    今天小熊浪费了很多时间在处理突发情况的​​bug​​上,有一个被守护进程托管的程序,我都把他停掉了,但是api很神奇还是在收到同样格式的消息,我看了很久的代码,一个函数一个......
  • 基于linux下的时间同步
    时间同步:在服务器端共享时间:vim/etc/chrony.conf29localstratum10开启时间共享功能并设定共享级别这个参数开启后本机不去同步别人的时间到本机22allow172.25.254.0/2......