Oracle表分区的学习

Oracle表分区的学习
      前一阵子一直在研究着Oracle的表分区的相关知识。在数据量不断扩大的现在,分区技术是一种非常有效的提高效率的技术。
     限于业务的原因,我以前每次建立分区表的时候都喜欢用日期进行分区,每天一个range分区。但是突然有一天我遇到了一个很讨厌的表,是一个对应关系表,只有产品和销售品的对应关系,这个样子的表是没有办法建立我最熟悉的range分区的,经过我查阅资料以后我发现hash分区是一个比较好的解决方案。
     hash分区就是对分区字段进行hash运算后,将数据均匀的分布在每一个分区上。hash,在大学的时候数据结构课上学过,意思是杂凑,听这个名字就知道这个方法无比适合。
     新学的分区语句:   
CREATE TABLE TEST PARTITION BY HASH(object_id) PARTITIONS 8 
 AS SELECT * FROM dba_objects;
     这样子的话,系统会自动的生成8个分区,每一个分区的名字也是系统指定的:    
 
     至于为什么从21开始分我还真的不理解,以后再说吧。
     可以查查每一个分区中有多少数据,range分区很好查,按分区列条件查就好了,这个hash不行,我查了一下,语句如下:
select count(1) from test partition(sys_p21);
     下面是这些个分区中的数据量:
     效果非常好。
     接下来就是看看数据的查询效率了。首先要对这个表进行一次analyze。然后autotrace一下这个执行计划,如下:   

 
      做实验要有一个对照组,下面新建一个没有分区的表,数据和test一样,这个表叫做test_2,然后插入数据,然后analyze,然后看执行计划:
      

 
      效果非常非常好,对于那种乱七八糟的表这个分区方法简直碉堡了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值