最近公司做一些分析报表,某两个表一个月的记录量去到千万级,因是同事负责,自己没能接触,但同事问起,一时想到使用分区表一技术,故再仔细的研究了一下,以下为备忘:
全局索引(global index)
1.必须是前缀索引,即索引列必须是以索引分区键相同,测试如下:
SQL> create table t4
2 (bp varchar2(10),
3 tdate date)
4 partition by range(tdate)
5 (partition p1 values less than (to_date('20120101','yyyymmdd')),
6 partition p2 values less than (to_date('20130101','yyyymmdd')),
7 partition pmax values less than (maxvalue));
SQL> create index t4_idx1 on t4(bp)
2 global partition by range(bp)
3 (partition p1 values less than ('999999999'),
4 partition p2 values less than (maxvalue));
Index created.
SQL> create index t4_idx2 on t4(bp)
2 global partition by range(tdate)
3 (partition p1 values less than (to_date('20120101','yyyymmdd')),
4 partition p2 values less than (maxvalue));
global partition by range(tdate)
*
ERROR at line 2:
ORA-14038: GLOBAL partitioned index must be prefixed
2.若要分区的话只能按range或hash分区(hash分区是10g后才支持)
3.因全局索引的分区不依赖分区表,故表的分区更改后,须手动rebuild索引分区以作同步,该步操作消耗资源较大.
1)查找失效的partition
select index_name,partition_name,status from dba_ind_partitions where status='UNUSABLE';
2)只能单个分区rebuild.
alter table <table> rebuild parition <partition name>
本地索引(local index),本地索引分区为一个索引分区对一个表分区,索引分区由oracle自动维护
1.唯一性的本地分区索引须含表分区键列,测试如下:
SQL> create table t4
2 (area char(4),
3 bp varchar2(20))
4 partition by list(area)
5 (partition p1 values('CN'),
6 partition p2 values('TW'),
7 partition p3 values('HK'));
Table created.
--create unique index报错
SQL> create unique index t4_idx1 on t4(bp) local;
create unique index t4_idx1 on t4(bp) local
*
ERROR at line 1:
ORA-14039: partitioning columns must form a subset of key columns of a UNIQUE index
--但create non -unique index则没问题
SQL> create index t4_idx1 on t4(bp) local;
Index created.
--用分区键create unique index是OK的.
SQL> create unique index t4_idx2 on t4(area) local;
Index created.
SQL> create unique index t4_idx3 on t4(bp,area) local;
Index created.
本地索引只支持分区内的唯一性,无法支持表上的唯一性,因此如果要用本地索引去给表做唯一性约束,则约束中必须要包括分区键列。
2.前缀和非前缀本地分区索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键,
何为分区消除:oracle执行计划能按索引键值只到相应分区寻值,从而有效减少扫描,此为之分区消除.
3.位图索引只能使用本地分区索引
相关推荐
oracle 分区索引,本地索引,全局索引的区别
ORACLE 分区表 分区索引 索引分区 实例讲解
分区索引 分区索引 分区索引 分区索引分区索引分区索引分区索引分区索引
oracle索引与分区索引介绍 删除分区 分区合并(从中间删除掉一个分区,或者两个分区需要合并后减少分区数量) 创建新的分区 交换分区
虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。
Oracle表分区和索引分区 分区概述 为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组...
表可以按range、hash、list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。局部索引local index1.局部...
总结描述Oracle 11g分区表的种类及分区索引的类型。范围分区,列表分区,散列分区,组合分区,哈希分区,全局索引,分区索引
MS SQL Server:分区表、分区索引 详解 1. 分区表简介 使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。 大型表:数据量巨大的表。 访问模式:因目的不同,需访问的...
分区索引(或索引分区)主要是针对分区表而言的。随着数据量的不断增长,普通的堆表...b、分区索引可以分为本地分区索引以及全局分区索引 本地分区索引: 本地分区索引信息的存放依赖于父表分区。也就是说对于本地索
如何创建,管理分区,分区索引。
全面学习分区表及分区索引二全面学习分区表及分区索引二
全面学习分区表及分区索引一全面学习分区表及分区索引一
对orcle大数据的查询的优化,ORACLE分区表、分区索引ORACLE对于分区表方式其实就是将表分段存储,一般普通表格是一个段存储,而分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在...
对于oracle分区表分区索引的详细说明。 详细描述了分区表的类型,分区索引的类型 分类 。 删除或truncate 表分区时,什么样的情况索引会失效 需要重建 ,什么时候 对索引 没影响 。
关于数据库的索引理论方面和具体应用的详细讲解。。。。
浅析SQL Server 2000索引视图:使用索引视图提高查询性能.pdf
创建索引 数据索引 课程目标 理解 —— 创建索引的语法; 掌握 —— 在已有表上创建索引的方法; 掌握 —— 在修改表时添加索引的方法; 掌握 —— 在创建表时创建索引的方法。 创建索引 使用CREATE INDEX语句创建...
让索引有序:用SQL Server 2005的新方法来移除索引碎片.pdf