oracle分区-散列分区

  

1 一个大学分n个年级,将年级号码进行hash求值,年级的所有学生在一个散列分区。

原理:散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。

 创建表分区:

  1. create table graderecord  
  2. (  
  3.   gradeno varchar2(10),  --年级id
  4.   sname varchar2(20) --学生信息
  5. )  
  6. partition by hash(gradeno)  
  7. (  
  8.   partition G1,  
  9.   partition G2,  
  10.   partition G3  
  11. );  

   插入值:

   insert into graderecord values('G1',1);

   insert into graderecord values('G1',2);

   insert into graderecord values('G2',1);

   insert into graderecord values('G2',2);

查询分区值:

  1. select * from graderecord;//全表查询(包括所有分区)
  2. select * from graderecord partition(G1);  //查询班级号为G1的分区值,注意此时不要带上单引号‘’。
  3. select * from graderecord partition(G2);  
  4. select * from graderecord partition(G3);  //此时查询G3,因为分区不存在,会报错。

修改分区:新增一个G3分区

alter table graderecord add partition G3;

  1. select * from graderecord partition(G3);  //此时查询G3,因为分区G3已经创建,可以正常查询到内容。



一个分区插入数据的存储过程:

creat or replace procedure test_cyb_cyb as
begin
declare  
i integer; --定义变量  
begin  
i := 1;  
loop  
/* 插入数据 */  
insert into tb () values ()
/* 参数递增 */  
i := i + 1;  
/* 停止条件 */  
exit when i > 2000000;  
end loop;  
commit;  
end;
end;


参考:http://blog.csdn.net/oyzl68/article/details/8142617


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值