对大表创建分区表的案例

有两张数据表的记录已经超过2亿,数据查询速度较慢,创建分区之后,由于分区裁剪的原因,速度快了不少。



一、对大表进行分区的案例(按月)

0.备份表的数据

create table  LUROU_bkup01  as  select * from  DC.LUROU


1.直接创建分区表,从原来的表select所有数据过来。

对数据表LUROU按月进行分区,划分范围的字段为TJRQ(体检日期)


CREATE TABLE LUROU_PARTEST01  PARTITION BY RANGE (TJRQ) 
(
PARTITION LUROU_201006VALUESLESSTHAN('20100631'),
PARTITION LUROU_201007VALUESLESSTHAN('20100731'),
PARTITION LUROU_201008VALUESLESSTHAN('20100831'),
PARTITION LUROU_201009VALUESLESSTHAN('20100931'),
....................
PARTITION LUROU_202007VALUESLESSTHAN('20200731'),
PARTITION LUROU_202008VALUESLESSTHAN('20200831'),
PARTITION LUROU_202009VALUESLESSTHAN('20200931'),
PARTITION LUROU_202010VALUESLESSTHAN('20201031'),
PARTITION LUROU_202011VALUESLESSTHAN('20201131'),
PARTITION LUROU_202012VALUESLESSTHAN('20201231'),
PARTITION LUROU_MAX VALUES LESS THAN (MAXVALUE)
)
AS  select  *  from DC.LUROU




2.修改表名

rename   LUROU  TO   LUROU_PARTEST_TEMP
rename   LUROU_PARTEST01   TO   LUROU


3.核实结果

select  count(*)   from DC.LUROU  
SELECT COUNT(*) FROM DC.LUROU PARTITION (LUROU_201006);
SELECT COUNT(*) FROM DC.LUROU PARTITION (LUROU_201206);




4.创建索引

create index INDX_LUROU_TJRQ on LUROU(TJRQ)    nologging parallel 40;


alter index INDX_LUROU_TJRQ logging;


注意:
nologging可以避免生成redo日志;
parallel在服务器cpu资源充足的情况下,可以很大程度上提高索引的创建速度





















二、对大表进行分区的案例(按季度)



0.备份表的数据
create table  BBBBB_bkup01  as  select * from  DC.BBBBB


1.直接创建分区表,从原来的表select所有数据过来。
对数据表BBBBB按月进行分区,划分范围的字段为JHDCJSJ_TXT(日期)


CREATE TABLE BBBBB_PARTEST01  PARTITION BY RANGE (JHDCJSJ_TXT) 
(
PARTITION BBBBB_200803VALUESLESSTHAN('20080331'),
PARTITION BBBBB_200806VALUESLESSTHAN('20080631'),
PARTITION BBBBB_200809VALUESLESSTHAN('20080931'),
.................
PARTITION BBBBB_201809VALUESLESSTHAN('20180931'),
PARTITION BBBBB_201812VALUESLESSTHAN('20181231'),
PARTITION BBBBB_201903VALUESLESSTHAN('20190331'),
PARTITION BBBBB_201906VALUESLESSTHAN('20190631'),
PARTITION BBBBB_201909VALUESLESSTHAN('20190931'),
PARTITION BBBBB_201912VALUESLESSTHAN('20191231'),
PARTITION BBBBB_202003VALUESLESSTHAN('20200331'),
PARTITION BBBBB_202006VALUESLESSTHAN('20200631'),
PARTITION BBBBB_202009VALUESLESSTHAN('20200931'),
PARTITION BBBBB_202012VALUESLESSTHAN('20201231'),
)
AS  select  *  from DC.BBBBB




2.修改表名
rename   BBBBB  TO   BBBBB_PARTEST_TEMP
rename   BBBBB_PARTEST01   TO   BBBBB


3.核实结果
select  count(*)   from DC.BBBBB  


SELECT COUNT(*) FROM T PARTITION (BBBBB_200803);




SELECT COUNT(*) FROM T PARTITION (BBBBB_200806);




SELECT COUNT(*) FROM T PARTITION (BBBBB_200809);






4.创建索引
create index INDX_BBBBB_JHDCJSJ_TXT on BBBBB(JHDCJSJ_TXT)    nologging parallel 40;


alter index INDX_BBBBB_JHDCJSJ_TXT logging;













___________________________________________________________________________________

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Author:   laven54 (lurou)

Email:    laven54@163.com

Blog:      http://blog.csdn.net/laven54

QQ群: 164734649  可以到群里来提问,Oracle相关的问题我都很感兴趣




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值