oracle 分区

oracle 分区在数据量小的表里面一般基本用不到,一旦数据到达千万级别,使用分区不仅更为查询效率提高,并且维护方便,均衡IO等。

表空间必须在创建表后立即创建,因此在设计表时,一定要考虑周全,对业务,及数据的结构整理清楚。

分区的几种类型

表分区的类型有以下几种
1. 范围分区
2. 列表分区
3. 散列分区
4. 范围-列表分区(被称为子分区)
5. 范围-散列分区(被称为子分区)

范围分区

范围分区的每个分区都有一个最大值,小于这个最大值的数据都在这个分区里面。

范围分区操作

--1、创建表、创建分区
create table t(c1 number ,c2 number)
partition by range(c1)
(
          partition p1 values less than(10000000),
          partition p2 values less than(20000000),
          partition p3 values less than(30000000)
);

--添加分区
alter table t add partition p4 value less than(4000000);

代码执行第一步的话,则会创建3个分区。
c1 字段小于10000000 的数据则会添加到p1 分区。
c1 字段小于20000000 的数据则会添加到p2 分区。
c1 字段小于30000000 的数据则会添加到p3 分区。

列表分区

列表分区是指定一个字段的固定值,符合字段是数据则会添加到这个分区中。

列表分区操作

--1、创建表、创建分区
create table t(c1 number ,c2 number)
partition by list(c2)
(
          partition p1 values(1),
          partition p2 values(2),
          partition p3 values(3)
);

--2、添加分区
alter table t add partition p4 values(4);

代码执行第一步的话,则会创建3个分区。
c2 字段等于1 的数据则会添加到p1 分区。
c2 字段等于2 的数据则会添加到p2 分区。
c2 字段等于3 的数据则会添加到p3 分区。

散列分区

散列分区也称hash分区,分区没有逻辑。但是它的用处也是不小的,特别适合海量数据及没有规则的数据。

1、创建表、创建分区
create table t(c1 number ,c2 number)
partition by hash(c2)
(
          partition p1,
          partition p2,
          partition p3
);

--2、添加分区
alter table t add partition p4 values(4);

范围列表分区

范围列表分区,也称做为子分区。它的逻辑是将一个范围分区里再次分区为多个列表分区。

--创建表、创建分区
create table t1 (c1 number,c2 date)
partition by range(c2) subpartition by list(c1)(
          partition p1 values less than(to_date('2010-01-01','yyyy-mm-dd'))(
                    subpartition p11 values(1),
                    subpartition p12 values(2),
                    subpartition p13 values(3)
          ),
          partition p2 values less than(to_date('2011-01-01','yyyy-mm-dd'))(
                    subpartition p21 values(1),
                    subpartition p22 values(2),
                    subpartition p23 values(3)
          )
);

--添加分区
alter table t1 add partition p3 values less than(to_date('2012-01-01','yyyy-mm-dd'))(
                    subpartition p31 values(1),
                    subpartition p32 values(2),
                    subpartition p33 values(3)
          )

范围散列分区

此分区与范围列表分区类似,只是子分区不同了。

--创建表,创建分区
create table t2 (c1 number,c2 date)
partition by range(c2) subpartition by hash(c1)(
          partition p1 values less than(to_date('2010-01-01','yyyy-mm-dd'))(
                    subpartition p11,
                    subpartition p12,
                    subpartition p13
          ),
          partition p2 values less than(to_date('2011-01-01','yyyy-mm-dd'))(
                    subpartition p21,
                    subpartition p22,
                    subpartition p23
          )
);

--添加分区
alter table t2 add partition p3 values less than(to_date('2012-01-01','yyyy-mm-dd'))(
                    subpartition p31 ,
                    subpartition p32,
                    subpartition p33
          )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值