您的位置:首页 > 数据库 > Oracle

ORACLE 表分区

2016-04-06 12:27 423 查看
--1、先创建一个临时表,用于分区,表结构跟原来保持一致

create table TEST_TEMP

(

ID CHAR(12) not null,

WORKFLOWID VARCHAR2(40),

WORKID VARCHAR2(100),

---中间省去相关内容

COOPERATE_FLAG VARCHAR2(1)

)

partition by list (WORKFLOWID)

(

PARTITION P_ImpAdviceAudit VALUES('ImpAdviceAudit'),

PARTITION P_ImpEPAudit VALUES('ImpEPAudit'),

PARTITION P_OTHERS values (default)

);

--2、关闭数据库日志,为写入数据准备,减少数据库的redo和undo日志,将原有的流程表数据拷贝到分区后的临时表中,使用append模式插入数据,减少undo的开销,提升数据的插入速度

alter table TEST_TEMP nologging;

insert /*+append*/ into TEST_TEMP select * from TEST;

commit;

alter table TEST_TEMP logging;

--3、为临时表添加索引

create index IDX_WFTFC1 on TEST_TEMP (WORKID) nologging;

--4、修改原来的表名为备份表,以便数据恢复使用

ALTER TABLE TEST RENAME TO TEST_BAK;

--5、将临时表名称修改为正式表

ALTER TABLE TEST_TEMP RENAME TO TEST;

--6、更新表的统计信息(包括表和索引),以便提高查询统计效率

exec dbms_stats.gather_table_stats(user,'TEST',cascade=>true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: