Oracle创建表分区

直接进入主题----可以这样理解,当一个数据表在插入数据的时候,在几百条或者几千条数据中查询目标数据的时候不会花费多长时间,最多一两秒!但是随着数据的不断增加,当达到上万条或者几百万条的时候,当你在查询某个数据,这是可能会花费几分钟,甚至会导致系统挂掉!这个时候就需要考虑分区!
分区条件:

  • 表的大小超过2GB;
  • 表中含有历史数据,新的数据被增加到新的分区中.
优点:

  • 提高查询的性能:对分区对象的查询可以
  • 提高可用性:如果某个分区出现故障,表在其他分区的数据依然可以使用
  • 维护方便:如果某个表出现故障,需要修复数据,质修复该分区即可
  • 均衡I/O:可以吧不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

缺点:
    分区表相关:已经存在的表没有方法可以直接转化为分区,不过Oracle提供了在线重定义表的功能
分区的几种类型及操作方法:范围分区、散列分区、列表分区、复合分区

范围分区:

顾名思义,就是根据某个值,根据给定值的范围将整个表分区,就像分数等级一样;

create table partition_range (
    id number(19,0) not null,
    name varchar2(128 char) not null,
    score number(10,0) not null,
    primary key(id)
)partition by range(score)
(
  partition bujige values less than(60), --不及格  
  partition jige values less than(85), --及格  
  partition youxiu values less than(maxvalue) --优秀  
<p>);<span style="font-family:Microsoft YaHei;font-size:14px;">
</span></p><p>
</p>

根据字段‘score’的范围分成不及格、及格和优秀三个分区,给定值的范围
插入测试数据

insert into partition_range values(1,'sd1',54);
insert into partition_range values(2,'sd2',65);
insert into partition_range values(3,'sd3',87);
insert into partition_range values(4,'sd4',90);
insert into partition_range values(5,'sd5',76);

数据不多,但是每个分区都有

查询语句:

select * from partition_range 
select * from partition_range partition(bujige)
select * from partition_range partition(jige)
select * from partition_range partition(youxiu)
结果分别是:

全部

不及格

及格


优秀


需要注意的三点:

1、每一个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值