分区索引作用:为了提高数据访问的效率,常常建立索引,但是每次重建索引在数据量很大的时候会明显变慢,影响了处理效率,因此对于大量的数据,常常使用分区和分区索引相结合的办法,这样历史分区索引不用重建,只用对新分区进行索引进行处理就行了

分区索引,就可以分为:全局索引、分区索引, 即:global索引和local索引,前者为默认情况下在分区表上创建索引时的索引方式,并不对索引进行分区(索引也是表结构,索引大了也需要分区,关 于索引以后专门写点)而全局索引可修饰为分区索引,但是和local索引有所区别,前者的分区方式完全按照自定义方式去创建,和表结构完全无关,所以对于 分区表的全局索引有以下两幅网上常用的图解:

1、对于分区表的不分区索引(这个有点绕,不过就是表分区,但其索引不分区):

 分区索引_分区索引

创建语法(直接创建即可)

CREATE INDEX <index_name> ON <partition_table_name>(<column_name>);

 

2、对于分区表的分区索引:

分区索引_分区索引_02

创建语法为:

CREATE INDEX INX_TAB_PARTITION_COL1 ON TABLE_PARTITION(COL1)
  GLOBAL PARTITION BY RANGE(COL1)(
         PARTITION IDX_P1 values less than (1000000),
         PARTITION IDX_P2 values less than (2000000),
         PARTITION IDX_P3 values less than (MAXVALUE)
  );

 

3、LOCAL索引结构:

 分区索引_分区索引_03

 

创建语法为:

 CREATE INDEX INX_TAB_PARTITION_COL1 ON TABLE_PARTITION(COL1) LOCAL;

也可按照分区表的的分区结构给与一一定义,索引的分区将得到重命名。

分区上的位图索引只能为LOCAL索引,不能为GLOBAL全局索引。



--1、建分区表   
CREATE TABLE P_TAB(   
C1 INT,   
C2 VARCHAR2(16),   
C3 VARCHAR2(64),   
C4 INT ,   
CONSTRAINT PK_PT PRIMARY KEY (C1)   
)   
PARTITION BY RANGE(C1)(   
PARTITION P1 VALUES LESS THAN (10000000),   
PARTITION P2 VALUES LESS THAN (20000000),   
PARTITION P3 VALUES LESS THAN (30000000),   
PARTITION P4 VALUES LESS THAN (MAXVALUE)   
);   
--2、建全局分区索引   
CREATE INDEX IDX_PT_C4 ON P_TAB(C4) GLOBAL PARTITION BY RANGE(C4)   
(   
PARTITION IP1 VALUES LESS THAN(10000),   
PARTITION IP2 VALUES LESS THAN(20000),   
PARTITION IP3 VALUES LESS THAN(MAXVALUE)   
);   
--3、建本地分区索引   
CREATE INDEX IDX_PT_C2 ON P_TAB(C2) LOCAL (PARTITION P1,PARTITION P2,PARTITION P3,PARTITION P4);   
--4、建全局分区索引(与分区表分区规则相同的列上)   
CREATE INDEX IDX_PT_C1   
ON P_TAB(C1)   
GLOBAL PARTITION BY RANGE (C1)   
(   
PARTITION IP01 VALUES LESS THAN (10000000),   
PARTITION IP02 VALUES LESS THAN (20000000),   
PARTITION IP03 VALUES LESS THAN (30000000),   
PARTITION IP04 VALUES LESS THAN (MAXVALUE)   
);   
--5、分区索引数据字典查看   
SELECT * FROM USER_IND_PARTITIONS;   
SELECT * FROM USER_PART_INDEXES;