Oracle 分区攻略(三)

   分区索引与全局索引的使用介绍

本地索引:
drop index Dept_List_Index;
CREATE INDEX Dept_List_Index ON DEPT_List (DeptNo)  LOCAL;

select table_name,partition_name,high_value from user_tab_partitions where table_name='DEPT_LIST';
select index_name,partition_name,high_value from user_ind_partitions where index_name='DEPT_LIST_INDEX';

全局索引:
drop index Dept_RNG_Index;
CREATE INDEX Dept_RNG_Index ON DEPT_RNG (DEPTNO,DEPTNAME) Global
PARTITION BY range(DEPTNO)  
    (PARTITION D1 VALUES LESS THAN (15) TABLESPACE TS1, 
     PARTITION D2 VALUES LESS THAN (MAXVALUE) TABLESPACE TS2);

drop index Dept_RNG_Index2;
CREATE INDEX Dept_RNG_Index2 ON DEPT_RNG (DEPTNO) Global;

select table_name,partition_name,high_value from user_tab_partitions where table_name='DEPT_RNG';
select index_name,partition_name,high_value from user_ind_partitions where index_name in ('DEPT_RNG_INDEX');
select index_name,partition_name,high_value from user_ind_partitions where index_name in ('DEPT_RNG_INDEX2');

分区索引重建:
ALTER INDEX artist_ix REBUILD PARTITION artist_par3 TABLESPACE index3;
--修整不常用的分区索引
--(1)
ALTER TABLE sales MODIFY PARTITION mar07 UNUSABLE LOCAL INDEXES;
--(2)
ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE;
--(3)
INSERT INTO sales PARTITION (mar07)SELECT * FROM sales_mar07;
--(4)
ALTER TALBE sales MODIFY PARTITION mar07 REBUILD UNUSABLE LOCAL INDEXES;


PS.增加一点个人建议。我之前在做BI项目的时候,索引尽量不要乱建,也尽量不要建那么多的字段。对于数据仓库这一类,可以用BITMAP,普通的OLTP系统,用B+tree索引。
冗余数据,尽量不要建索引,意义不大,这一类字段过滤速度快,增加过滤条件就可以提高速度。如:YEAR,AGE,COUNTRY
索引尽量要建在连接条件,ID类字段上面,这一类字段不同的数据量大,而且查找的概率高。如:USER_ID,SERVICE_ID..

猜你喜欢

转载自dacoolbaby.iteye.com/blog/1635183