Oracle分區索引可能對於很多剛接觸Oracle數據庫的新人來說,還比較陌生。下面就為您詳細介紹Oracle分區索引方面的知識,希望可以讓您對Oracle分區索引有更多的了解。
Oracle分區索引語法:
- Table Index
- CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name
- ON [schema.]table_name [tbl_alias]
- (col [ASC | DESC]) index_clause index_attribs
- index_clauses:
Oracle分區索引分以下兩種情況
1 Local Index
就是索引信息的存放位置依賴於父表的Partition信息,換句話說創建這樣的索引必須保證父表是Partition
索引信息存放在父表的分區所在的表空間。但是僅可以創建在父表為HashTable或者composite分區表的。
LOCAL STORE IN (tablespace)
僅可以創建在父表為HashTable或者composite分區表的。並且指定的分區數目要與父表的分區數目要一致
- LOCAL STORE IN (tablespace) (PARTITION [partition [LOGGING|NOLOGGING] [TABLESPACE {tablespace|DEFAULT}] [PCTFREE int] [PCTUSED int] [INITRANS int] [MAXTRANS int] [STORAGE storage_clause] [STORE IN {tablespace_name|DEFAULT] [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])
索引信息存放在父表的分區所在的表空間,這種語法最簡單,也是最常用的分區索引創建方式。
Local
並且指定的Partition 數目要與父表的Partition要一致
- LOCAL (PARTITION [partition
- [LOGGING|NOLOGGING]
- [TABLESPACE {tablespace|DEFAULT}]
- [PCTFREE int]
- [PCTUSED int]
- [INITRANS int]
- [MAXTRANS int]
- [STORAGE storage_clause]
- [STORE IN {tablespace_name|DEFAULT]
- [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])
2 Global Index
索引信息的存放位置與父表的Partition信息完全不相干。甚至父表是不是分區表都無所謂的。語法如下:
- GLOBAL PARTITION BY RANGE (col_list)
- ( PARTITION partition VALUES LESS THAN (value_list)
- [LOGGING|NOLOGGING]
- [TABLESPACE {tablespace|DEFAULT}]
- [PCTFREE int]
- [PCTUSED int]
- [INITRANS int]
- [MAXTRANS int]
- [STORAGE storage_clause] )
但是在這種情況下,如果父表是分區表,要刪除父表的一個分區都必須要更新Global Index ,否則索引信息不正確
- ALTER TABLE TableName DROP PARTITION PartitionName Update Global Indexes