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 來查看,是否已經建立成功。
總結
以上是生活随笔為你收集整理的oracle list 分区详解,oracle的List分区及分区索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总电费470+一共4个人住+其中3个人时
- 下一篇: 努兔定制技术长高会反弹回去吗?真的能长高