`
vvnet
  • 浏览: 116445 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Orale分区索引

 
阅读更多

表可以按rangehashlist分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。

局部索引local index

1.        局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区数,一句话,局部索引的分区机制和表的分区机制一样。

2.        如果局部索引的索引列以分区键开头,则称为前缀局部索引。

3.        如果局部索引的列不是以分区键开头,或者不包含分区键列,则称为非前缀索引。

4.        局部索引只能依附于分区表上

5.        前缀和非前缀索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键。

6.        局部索引只支持分区内的唯一性,无法支持表上的唯一性,因此如果要用局部索引去给表做唯一性约束,则约束中必须要包括分区键列。

7.        局部分区索引是对单个分区的,每个分区索引只指向一个表分区;全局索引则不然,一个分区索引能指向n个表分区,同时,一个表分区,也可能指向n个索引分区,对分区表中的某个分区做truncate或者moveshrink等,可能会影响到n个全局索引分区,正因为这点,局部分区索引具有更高的可用性。

8.        位图索引只能为局部分区索引

9.        局部索引多应用于数据仓库环境中

全局索引global index

1.        全局索引的分区键和分区数和表的分区键和分区数可能都不相同,表和全局索引的分区机制不一样。

2.        全局索引可以分区,也可以是不分区索引,全局索引必须是前缀索引,即全局索引的索引列必须是以索引分区键作为其前几列。

3.        全局索引可以依附于分区表;也可以依附于非分区表

4.        全局分区索引的索引条目可能指向若干个分区,因此,对于全局分区索引,即使只截断一个分区中的数据,都需要rebulid若干个分区甚至是整个索引。

5.        全局索引多应用于oltp系统中

6.        全局分区索引只按范围或者散列分区,hash分区是10g以后才支持

7.        oracle9i以后对分区表做move或者truncate的时可以用update global indexes语句来同步更新全局分区索引,用消耗一定资源来换取高度的可用性。

8.        表用a列作分区,索引用b做局部分区索引,若where条件中用b来查询,那么oracle会扫描所有的表和索引的分区,成本会比分区更高,此时可以考虑用b做全局分区索引。

分区索引字典

DBA_PART_INDEXES分区索引的概要统计信息,可以得知每个表上有哪些分区索引,分区索引的类型(local/global)

Dba_ind_partitions  每个分区索引的分区级统计信息

Dba_indexes/dba_part_indexes可以得到每个表上有哪些非分区索引

索引重建

Alter index idx_name rebuild partition index_partition_name [online nologging]

需要对每个分区索引做rebuild,重建的时候可以选择online(不会锁定表),或者nologging建立索引的时候不生成日志,加快速度。

Alter index rebuild idx_name [online nologging]

对非分区索引,只能整个index重建

分区索引实例

 

  1. --1、建分区表  
  2. CREATE TABLE P_TAB(  
  3. C1 INT,  
  4. C2 VARCHAR2(16),  
  5. C3 VARCHAR2(64),  
  6. C4 INT ,  
  7. CONSTRAINT PK_PT PRIMARY KEY (C1)  
  8. )  
  9. PARTITION BY RANGE(C1)(  
  10. PARTITION P1 VALUES LESS THAN (10000000),  
  11. PARTITION P2 VALUES LESS THAN (20000000),  
  12. PARTITION P3 VALUES LESS THAN (30000000),  
  13. PARTITION P4 VALUES LESS THAN (MAXVALUE)  
  14. );  
  15. --2、建全局分区索引  
  16. CREATE INDEX IDX_PT_C4 ON P_TAB(C4) GLOBAL PARTITION BY RANGE(C4)  
  17. (  
  18. PARTITION IP1 VALUES LESS THAN(10000),  
  19. PARTITION IP2 VALUES LESS THAN(20000),  
  20. PARTITION IP3 VALUES LESS THAN(MAXVALUE)  
  21. );  
  22. --3、建本地分区索引  
  23. CREATE INDEX IDX_PT_C2 ON P_TAB(C2) LOCAL (PARTITION P1,PARTITION P2,PARTITION P3,PARTITION P4);  
  24. --4、建全局分区索引(与分区表分区规则相同的列上)  
  25. CREATE INDEX IDX_PT_C1  
  26. ON P_TAB(C1)  
  27. GLOBAL PARTITION BY RANGE (C1)  
  28. (  
  29. PARTITION IP01 VALUES LESS THAN (10000000),  
  30. PARTITION IP02 VALUES LESS THAN (20000000),  
  31. PARTITION IP03 VALUES LESS THAN (30000000),  
  32. PARTITION IP04 VALUES LESS THAN (MAXVALUE)  
  33. );  
  34. --5、分区索引数据字典查看  
  35. SELECT * FROM USER_IND_PARTITIONS;  
  36. SELECT * FROM USER_PART_INDEXES; 
分享到:
评论

相关推荐

    分区索引,本地索引,全局索引的区别

    #### 一、Oracle分区索引概念及分类 在Oracle数据库中,分区索引是针对分区表的一种特殊索引类型,它可以显著提高对于大规模数据集的查询性能。根据索引是否与表的分区策略相匹配,分区索引可以分为两大类:本地...

    深入oracle分区索引的详解

    Oracle分区索引是一种优化数据库性能的技术,特别是在处理大数据量的表时。分区是将一个大表分解成多个小块,每个块(或分区)都基于一个或多个列的值进行组织。这种技术允许数据库管理系统更有效地管理和检索数据,...

    oracle分区表分区索引.docx

    Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...

    oracle索引与分区索引介绍

    Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建...

    oracle分区索引的失效和重建代码示例

    Oracle分区索引是一种优化大型数据库查询性能的有效方法。它将大的单个索引分解为较小、更易管理的分区,每个分区对应表中的一个数据段。这样,查询只需要扫描与查询条件相关的分区,而非整个索引,从而提高查询速度...

    Oracle 分区索引介绍和实例演示

    总的来说,Oracle分区索引是大数据环境下提升数据库性能的关键技术。理解其工作原理和应用场景,能够帮助数据库管理员有效地设计和管理数据库,优化查询效率,同时保证系统的稳定性和可扩展性。

    Oracle分区表及分区索引

    Oracle 分区表及分区索引 Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) ...

    Oracle 分区表 分区索引

    ### Oracle 分区表与分区索引详解 #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并...

    ORACLE分区与索引

    针对分区表,Oracle 提供了分区索引,它允许索引与分区策略相结合。例如,可以创建局部索引,每个分区都有自己的索引,或者创建全局索引,覆盖所有分区。局部索引通常在查询性能上有优势,而全局索引则适用于跨分区...

    Oracle分区表和分区索引在VLDB中的研究.pdf

    "Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...

    Oracle 分区表 分区索引 索引分区详解

    虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。

    深入学习分区表及分区索引(详解oracle分区).docx

    以下是对Oracle分区表和分区索引的深入解析: 1. **何时使用分区**: - 当表的数据量超过2GB时,分区有助于避免32位操作系统下的文件大小限制,同时减少大规模数据的备份时间。 - 对于包含历史数据的表,如按月份...

    oracle分区与索引

    ### Oracle 分区与索引详解 #### 一、Oracle 分区概述 在Oracle数据库中,分区是一种物理数据组织技术,它将一个大的表或索引分成多个较小的部分,每个部分都可以独立管理。通过分区,可以显著提高查询性能,简化...

Global site tag (gtag.js) - Google Analytics