Oracle-創建索引分區


對大數據量索引進行分區同樣能夠優化應用系統的性能。一般來說,如果索引所對應的表的數據量非常大,比如幾百萬甚至上千萬條數據,則索引也會占用很大的空間,這時,建議對索引進行分區。

  Oracle索引分區分為本地索引分區和全局索引分區兩種:全局索引不反映基礎表的結構,因此,若要分區就只能進行范圍分區;而局部索引反映基礎表的結構。

 

本地索引分區

  本地索引分區就是使用和分區表同樣的分區鍵進行分區的索引,也就是說,索引分區所采用的列與該表的分區所采用的列是相同的,本地索引有以下優點:

如果只有一個分區需要維護,則只有一個本地索引受影響

支持分區獨立性

只有本地索引能夠支持單一分區的裝入和卸載
表分區和各自的本地索引可以同時恢復
本地索引可以單獨重復
位圖索引僅由本地索引支持

如:創建一個表分區,然后根據這個表分區創建本地索引區
1.首先創建3個表空間,分別存放到3不同磁盤分區中,分別為ts_1,ts_2,ts_3

2.創建一個存儲學生成績的分區表studentgrade,該表共有3個分區,分別位於表空間 ts_1,ts_2,ts_3

create table studentgrade
(
id number primary key,
name varchar2(10),
subject varchar2(10),
grade number
)
partition by range(grade)
(
partition par_nopass values less than(60) tablespace ts_1,
partition par_pass values less than(70) tablespace ts_2,
partition par_good values less than(maxvalue) tablespace ts_3
)
/

3.根據表分區創建本地索引分區,與表分區一樣,索引分區也是3個分區(p1,p2,p3)

create index grade_index on studentgrade(grade)
local
(
partition p1 tablespace ts_1,
partition p2 tablespace ts_2,
partition p3 tablespace ts_3
)
/

4.最后,用戶可以通過查詢dba_ind_partitions視圖來查看索引分區信息

select partition_name,tablespace_name from dba_ind_partitions where index_name='GRADE_INDEX';

 

全局索引區

  全局索引就是沒有與分區表相同分區鍵的分區索引。當分區中出現許多事物並且要保證所有分區中的數據記錄唯一時,采用全局索引分區

無論表是否采用分區,都可以對表采用全局索引分區,此外,不能對Cluster表、位圖索引采用全局索引分區


如:以books表的saleprice列為索引列和分區鍵,創建一個范圍分區的全局索引

create index index_saleprcie on books(saleprice)

global  partition by range(saleprice)

(

partition p1 values less than(30),

partition p2 values less than(50),

partition p3 values less than(maxvalue)

);

 

如:以books表的ISBN列為索引列和分區鍵,創建一個HASH分區的全局索引

create index index_ISBN on books(ISBN)

global partition by hash(ISBN);

 

 

管理索引分區

  在管理索引分區中的各種操作中,常用的操作主要包括刪除索引分區和重命名索引分區

1.刪除索引分區

在books表的index_saleprice索引中,使用alter index... drop partition語句刪除其中的索引分區p2

alter index index_saleprice drop partition p2;

對於全局索引分區,不能刪除索引的最高分區,否則系統會提示錯誤

 

  在刪除若干索引分區之后,如果只剩余一個索引分區,則需要對這個分區進行重建,重建分區可以使用alter index..rebuild partition

如:在books表的index_saleprice索引中,刪除其中p2和p1索引分區,然后使用alter index... rebuild partition語句重建索引分區p3

alter index index_saleprice drop  partition p2;

alter index index_saleprice drop  partition p1;

alter index index_saleprice rebuild partition p3;

 

  重命名索引分區

如:在index_saleprice索引中,使用alter  index... rename partition 重命名索引分區p3

alter index index_saleprice rename partition p3 to p_new;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM