在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 创建分区索引,以便于您获取更多的相关知识。