当前位置:   article > 正文

oracle list 分区详解,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 来查看,是否已经建立成功。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号