oracle list 分区详解,oracle的List分区及分区索引

最近在做的一个项目,由于涉及到数据量会在半年内破千万条,考虑到数据量比较大,日后查询起来会比较费时,所以考虑使用oracle的分区特性。oracle10g产品中的分区表分为List,hash,range三个。

经过分析,我的数据表Test_table_name中的SPCODE列的值是若干个固定不变的,而且该列不会被更新到。这样它符合List分区的特性。所以决定使用list分区来做。有一点需要注意的是,我们必须在建立表时进行分区,而不能在建完未分区的表后,添加分区。当然oracle提供了重定义表的方式可以用来重新分区,但它会删除所有数据。

建立分区表:

create table test_table_name(spcode varchar2(8),  time date,  ……) partition list(spcode)(

partition 分区1 values('sp01'),

partition 分区2 values('sp02')

)

可以使用 select * from user_tab_partition 查看分区情况

在list分区后,假如还有新的分区键值进来,这时我们有这种处理方式:

1,使用默认分区。

2,添加新的分区。

第一种的语法是  alter table test_table_name add partition 新分区3 values('sp03')

第二种的语法是  alter table test_table_name add partition 默认分区 values(default); -- default为oracle关键字

这里需要注意的是,如果一旦使用了默认分区,那么在下次我们想添加新分区时,有可能就会报错。因为新的分区的值可能在默认分区中出现过。

在建立完分区后,这个时候,我可以认为建立了几个表格(类似一个分区就是一个表),所以为了提高查询效率,我们还可能会建立索引,在分区中分为全局索引和分区索引。假如分区还会不断的新增的话,建议使用分区索引,这样不会在新增表时,破坏索引。

本地分区索引的语法:create index index_name on test_table_name(linkid) local;

或者 create index index_name on test_table_name(linkid) local (

partition 分区1, partition 分区2,…………

)

可以使用 select * from user_ind_partitions 来查看,是否已经建立成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值