多列分区

     范围分区 range(A,B)的分区法则,范围分区都是 values less than(A,B)的,通常情况下以A为准,如果小于A的不用考虑B,直接插进去,如果等于A那么考虑B,要是满足B的话也插进去。

 

    

(一)创建分区表

 

           create table tmp_11
(
  COMPANY_ID          NUMBER(8) not null,
  SO_NO               CHAR(12) not null,
  N_YEAR                number(4),
  N_MONTH                number(2),
  N_DAY                     number(2)
  )
  partition by range(N_YEAR,N_MONTH,N_DAY)
  (    
  partition p1 values less than (2011,1,1),
  partition p2 values less than (2012,1,1),
  partition p3 values less than (2013,1,1),
  partition p4 values less than (2014,1,1)
  )
 
(2)创建主键索引

       SQL> alter table tmp_11 add constraint PK_TMP_11 primary key (COMPANY_ID,SO_NO)  using index local tablespace dms_index;
 
alter table tmp_11 add constraint PK_TMP_11 primary key (COMPANY_ID,SO_NO)  using index local tablespace dms_index
 
ORA-14039: partitioning columns must form a subset of key columns of a UNIQUE index

        alter table tmp_11
  add constraint PK_TMP_11 primary key (COMPANY_ID,SO_NO)

 

注:创建本地索引的条件,在主键和唯一约束中,分区列必须在主键中。

SQL> alter table tmp_11 add constraint PK_TMP_11 primary key (COMPANY_ID,SO_NO)  ;
 
Table altered
 

 

(3)插入数据,查看执行计划

 

 select * from tmp_11 where n_year=2009

select * from tmp_11 where n_month=9
select * from tmp_11 where n_day=9

 

select * from tmp_11 where n_year=2009 and n_day=9

分区执行计划

 

Oracle分区执行计划

 
range分区可用的操作:  www.2cto.com  
分区表,按 n1 ,n2 分区
partition range single:访问单个分区
partition range iterator:访问多个分区 
partition range inlist: 分区键中用了in   例如: where n1 in(X1,X2) and n2=X3
partition range all:  所有的分区 
partition range empty: 条件在分区中不存在 (或者说是找不到数据)
partition range or: 分区键中用了or    例如  where n1=X1 or n2=X2
partition range subquery:
partition range join-filter:
partition range multi-column:
 
hash分区可用的操作:
partition hash single:
partition hash iterator:
partition hash inlist
partition hash all
partition hash subquery
partition hash join-filter
比range少了partition range or和partition range multi-column 
 
list分区可用的操作:
partition list single
partition list iterator
partition list inlist
partition list all
partition list empty
partition list or
partition list subquery
partition list join-filter
 

PARTITION RANGE (MULTI-COLUMN)

访问以组合字段为分区键的范围分区(RANGE PARTITION)表中所有与多个分区字段过滤条件相匹配的分区。多列范围分区一般使用于一些特定的条件中

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值