当前位置:  数据库>oracle

Oracle分区索引

    来源: 互联网  发布时间:2017-03-29

    本文导语: 表可以按range、hash、list分区,表分区后,其上的索引和普通表上的索引有所不同,Oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。 局部索引local index 1.        局部...

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

局部索引local index

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

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

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

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

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

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

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

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

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

全局索引global index

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

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、建分区表
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;



































    
 
 

您可能感兴趣的文章:

  • 请教安装oracle9i的分区建议,硬盘只有10-15G
  • Oracle数据库中分区功能详解
  • Oracle移动数据文件到新分区步骤分析
  • Oracle 数据表分区的策略
  • Oracle 间隔分区
  • ORACLE 分区表的设计
  • 深入oracle分区索引的详解
  • Oracle学习:分区表和索引
  • Oracle使用hash分区优化分析函数查询
  • 使用Oracle Partition Table对日志表进行分区
  • ORACLE8的分区管理
  • oracle表空间表分区详解及oracle表分区查询使用方法
  • oracle分区表之hash分区表的使用及扩展
  • Oracle数据表分区的策略
  • oracle存储过程创建表分区实例
  • 在Oracle中手工对任务进行分区的方法
  • Oracle与Mysql主键、索引及分页的区别小结
  • 从Oracle的约束到索引
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle9i取得建表和索引的DDL语句
  • oracle10g全文索引自动同步语句使用方法
  • Oracle建立二进制文件索引的方法
  • 在Oracle 10g中如何获得索引的专家建议
  • Oracle全文索引设置
  • 用Oracle 9i全索引扫描快速访问数据
  • Oracle中如何把表和索引放在不同的表空间里
  • Oracle索引存储关系到数据库的运行效率
  • Oracle索引聚簇表的数据加载
  • 在Oracle中监控和跟踪索引使用情况
  • oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
  • Oracle中检查是否需要重构索引的sql
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3