oracle的List分區及分區索引

  最近在作的一個項目,因爲涉及到數據量會在半年內破千萬條,考慮到數據量比較大,往後查詢起來會比較費時,因此考慮使用oracle的分區特性。oracle10g產品中的分區表分爲List,hash,range三個。oracle

  通過分析,個人數據表Test_table_name中的SPCODE列的值是若干個固定不變的,並且該列不會被更新到。這樣它符合List分區的特性。因此決定使用list分區來作。有一點須要注意的是,咱們必須在創建表時進行分區,而不能在建完未分區的表後,添加分區。固然oracle提供了重定義表的方式能夠用來從新分區,但它會刪除全部數據。spa

創建分區表:code

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

      partition 分區1 values('sp01'),產品

      partition 分區2 values('sp02') hash

)it

可使用 select * from user_tab_partition 查看分區狀況io

在list分區後,假如還有新的分區鍵值進來,這時咱們有這種處理方式:table

1,使用默認分區。test

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 來查看,是否已經創建成功。

相關文章
相關標籤/搜索