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
【编辑推荐】