文档详情

学习分区表,索引,物化视图的使用.ppt

发布:2017-04-18约1.06万字共41页下载文档
文本预览下载声明
----唐佳;ORACLE分区表分类:;分区的优点:;对于索引,需要区分创建的是全局索引,或本地索引:;WHEN: ;二、When使用Hash分区 通常呢,对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。 ;三、When使用List分区 List分区与range分区和hash分区都有类似之处,该分区与range分区类似的是也需要你指定列的值,但这又不同与range分区的范围式列值---其分区值必须明确指定,也不同与hash分区---通过明确指定分区值,你能控制记录存储在哪个分区。它的分区列只能有一个,而不能像range或者hash分区那样同时指定多个列做为分区依赖列,不过呢,它的单个分区对应值可以是多个。 你在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败,因此通常建议使用list分区时,要创建一个default分区存储那些不在指定范围内的记录,类似range分区中的maxvalue分区。 ;四、When使用组合分区 如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将分区再分区,即组合分区的方式。 组合分区呢在10g中有两种:range-hash,range-list。注意顺序哟,根分区只能是range分区,子分区可以是hash分区或list分区。 ;HOW ;1、创建range分区 ;创建一个标准的range分区表: JSSWEB create table t_partition_range (id number,name varchar2(50)) ?? 2?? partition by range(id)( ?? 3?? partition t_range_p1 values less than (10) tablespace tbspart01, ?? 4?? partition t_range_p2 values less than (20) tablespace tbspart02, ?? 5?? partition t_range_p3 values less than (30) tablespace tbspart03, ?? 6?? partition t_range_pmax values less than (maxvalue) tablespace tbspart04 ?? 7?? ); 表已创建。 ;② 创建global索引range分区: JSSWEB create index idx_parti_range_id on t_partition_range(id) ?? 2?? global partition by range(id)( ?? 3?? partition i_range_p1 values less than (10) tablespace tbspart01, ?? 4?? partition i_range_p2 values less than (40) tablespace tbspart02, ?? 5?? partition i_range_pmax values less than (maxvalue) tablespace tbspart03); 索引已创建。 ;由上例可以看出,创建global索引的分区与创建表的分区语句格式完全相同,而且其分区形式与索引所在表的分区形式没有关联关系。 注意:我们这里借助上面的表t_partition_range来演示创建range分区的global索引,并不表示range分区的表,只能创建range分区的global索引,只要你想,也可以为其创建hash分区的global索引。 ;查询索引的分区信息可以通过user_part_indexes、user_ind_partitions两个数据字典: JSSWEB select index_name, partitioning_type, partition_count ?? 2???? From user_part_indexes ?? 3??? where index_name = IDX_PARTI_RANGE_ID; INDEX_NAME????????????????????? PARTITI PARTITION_COUNT ------
显示全部
相似文档