Oracle Local VS Global分区索引简介

在Oracle中,索引和表一样也可以分区。有两种类型的分区索引,本地分区索引(Local )和全局分区索引(Global)。

1、本地索引(Local)

本地分区索引使用 LOCAL关键字创建,其分区边界与表相同(即与每个表分区相关联都有一个索引分区),下面 是一个本地分区索引的例子:

create table sales_par
partitioned by range (year)
( partition p_2009 values less than (2010)
  partition p_2010 values less than (2011),
  partition p_2011 values less than (2012),
  partition p_2012 values less than (2013)
)
as select * from sales;
--创建本地分区索引
create index sales_idx1 on sales_par (product,year) local;

可以看出,创建 本地分区索引的语句非常简单,不需要指定分区边界,因为它的分区边界和表的一样。其示 意图如下:

本地分区索引有如 下基本特征:

1. 本地索引一定是分区索引,分区键等同于表的分区键,分区数等同 于表的分区说,总之,本地索引的分区机制和表的分区机制一模一样。

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

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

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

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

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

7. 位图索引只能为本地分区索引。

8. 本地 索引多应用于OLAP环境中。

索引分区消除

如果本地分区索引包含分区键并且 SQL语句中的谓词条件包含分区键,执行计划通常仅需要访问一个或很少的索引分区,这种特 性叫分区消除(Partition Elimination),分区消除可以有效地减少扫描数据块,提高查询性 能,如:

--查询1:
select * from sales_par where product = 'CPU' and year = 2011;
--查询2:
select * from sales_par where product = 'CPU';

上例中,查询1的谓词条件包 含分区键,因此可以利用分区消除减少扫描的分区数(该例中只需要扫描分区p_2011);而 查询2的谓词条件不包含分区键,因此无法利用分区消除。

本地分区索引除了分区消除, 还具有表可用性更好这个优点,当对某个表分区进行DROP或MERGE操作后,Oracle会自动对所 对应的索引分区进行相同的操作,不需要rebuild,即维护操作可以在独立分区进行。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库 vs2012 vs
, vs2012
, 查询
, 索引
, 表分区
, 唯一性约束条件
, 唯一性索引
, vs2010后台查询
, 前缀
, 本地
, partition
, vs2012怎么连接Oracle
, 一个
分区索引
oracle local global、oracle 索引 local、oracle 分区索引、oracle 分区表 索引、oracle 创建分区索引,以便于您获取更多的相关知识。

时间: 2024-11-03 21:56:49

Oracle Local VS Global分区索引简介的相关文章

非分区键的GLOBAL分区索引键值更新会造成麻烦吗?

我们都知道如果想修改分区表的分区键的值如果跨越了分区,那么必须加入ENABLE ROW MOVEMENT 进行,因为此时可能的ROWID会出现变动, 关于ROWID 如下: Object ID (4 bytes) + DBA (4 bytes) + Row (2 bytes) 其中DBA包含了BLOCK地址和DATAFILE地址,如果UPDATE分区键的记录,可能的DATAFILE和BLOCK 都需要变动,所以要开启ENABLE ROW MOVEMENT. 而修改分区索引的键值在多个分区中移动为

关于ORACLE MYSQL在非前缀分区索引上分区剪裁的比较

ORACLE: CREATE TABLE testpur (i NUMBER, j NUMBER , f varchar2(20))      PARTITION BY RANGE(i)         (PARTITION p1 VALUES LESS THAN (10),          PARTITION p2 VALUES LESS THAN (20),          PARTITION p2 VALUES LESS THAN (30),          PARTITION p2

oracle点知识7——本地索引+全局索引

以下内同整理自网络: 分区索引分为本地(local index)索引和全局索引(global index). 1.本地索引: 其中本地索引又可以分为有前缀(prefix)的索引和无前缀(nonprefix)的索引.而全局索引目前只支持有前缀的索引. B*树索引和位图索引都可以分区,但是HASH索引不可以被分区.位图索引必须是本地索引(也就是说必须分区).下面就介绍本地索引以及全局索引各自的特点来说明区别: 本地索引特点: 1. 本地索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区

oracle的分区索引和全局索引

分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效,维护起来比较方便,但是在查询性能稍微有点影响. 建立分区索引: create index idx_ta_c2 on ta(c2) local (partition p1,partition p2,partition p3,partition p4); 或者 create index idx_ta_c2 on ta(c2) local ; 另外在crea

Oracle 分区索引

    分区索引(或索引分区)主要是针对分区表而言的.随着数据量的不断增长,普通的堆表需要转换到分区表,其索引呢,则对应的转换到分区索引.分区索引的好处是显而易见的.就是简单地把一个索引分成多个片断,在获取所需数据时,只需要访问更小的索引片断(块)即可实现.同时把分区放在不同的表空间可以提高分区的可用性和可靠性.本文主要描述了分区索引的相关特性并给出演示示例.   1.分区索引的相关概念a.分区索引的几种方式:表被分区而索引未被分区:表未被分区,而索引被分区:表和索引都被分区b.分区索引可以分为

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

分区索引(或索引分区)主要是针对分区表而言的.随着数据量的不断增长,普通的堆表需要转换到分区表,其索引呢,则对应的转换到分区索引.分区索引的好处是显而易见的.就是简单地把一个索引分成多个片断,在获取所需数据时,只需要访问更小的索引片断(块)即可实现.同时把分区放在不同的表空间可以提高分区的可用性和可靠性.本文主要描述了分区索引的相关特性并给出演示示例. 1.分区索引的相关概念 a.分区索引的几种方式:表被分区而索引未被分区:表未被分区,而索引被分区:表和索引都被分区 b.分区索引可以分为本地分区

深入oracle分区索引的详解_oracle

表可以按range.hash.list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结.局部索引local index1.局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区数,一句话,局部索引的分区机制和表的分区机制一样.2.如果局部索引的索引列以分区键开头,则称为前缀局部索引.3.如果局部索引的列不是以分区键开头,或者不包含分区键列,则称为非前缀索引.4.局部索引只能依

ORACLE 12C Partial Global/Local Indexes for Partitioned Tables

以前我有个想法,我只想对其中的某个或者某几个分区上创建索引,其他分区不想创建,在12C之前的版本,无论是Local还是Global index,都不能实现该需求,但是从ORACLE 12C开始引进了Partial Global/Local Indexes for Partitioned Tables,解决了该问题,可以在指定的分区上创建本地索引或者全局索引,主要语法是在表或者分区,子分区级别设置[INDEXING { ON | OFF }]创建测试表  代码如下 复制代码 CDB_PDB@CHF

【三思笔记】 全面学习Oracle分区表及分区索引

[三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可以分成几类: v  Range(范围)分区 v  Hash(哈希)分区 v  List(列表)分区 v  以及组合分区:Range-Hash,Range-List. 对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定 compress 属性),只不过分区依赖列不能是