散列分区
create table hash_t (id number, deal_date date ,area_code number , contents varchar2(4000))
partition by hash(deal_date)
partitions 12;
1.散列分区的关键字为 partition by hash
2.散列分区与之前两种分区的明显差别在于:没有指定分区名,而仅仅是指定了分区的个数,如partitions 12
3.散列分区的个数尽量设置为偶数个,如本例的12.如果是11或13个就不妥了,具体原因和Oracle内部架构有关。
4.可以指定散列分区的分区表空间,比如增加如下一段:store in (t1,t2,t3,t4)表示分别存在不同的表空间
组合分区
create table range_t (id number,deal_date date,area_code number,contents varchar2(4000))
pratition by range(deal_date)
subpartition by list(area_code)
subpartition template
(subpartition P_591 values (591),
subpartition P_592 values (592),
subpartition P_593 values (593),
subpartition p_other values (default) )
(partition p1 values less than (to_date('2014-02-01','yyyy-mm-dd')),
partition p2 values less than (to_date('2014-03-01','yyyy-mm-dd')),
partition p_max values less than (maxvalue)
);
1.组合分区是由主分区和从分区组成,比如范围-列表 分区,就表示主分区是范围分区,二从分区是列表分区,从分区的关键字为subpartition
2.为了避免在每个主分区中都写相同的从分区,可以考虑用模板方式,比如本例的subpartition template 关键字
3.只要涉及子分区模块,都需要有subpratition关键字
4.关于表空间和之前的没有差别,依然可以指定,可以不指定
分区原理
分区表会产生多个段,建立几个分区就有几个段,而普通表只有一个段。思想:化整为零,将大对象切割成多个小对象,从而使得在指定的小对象中定位到数据成为一种可能,最终达到减少访问路径,尽量少做事就能解决问题。