继续分区表
Hash分区(散列分区)
散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中:
create table memberBase
(
memberIDnumber(10) primary key,
memberLoginName varchar2(40) not null,
memberLoginPwd char(32) not null,
…
)
partitionby hash(memberID)
(
partition part_01 tablespace tb_mb01,
partition part_02 tablespace tb_mb02,
partition part_03 tablespace tb_mb03
);
建表成功,此时插入数据,系统将按memberID 将记录散列地插入三个分区中,这里也就是三个不同的表空间中。
复合分区
有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。
复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法,如将物料交易的记录按时间分区,
然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中:
create table memberInfo
(
memberIDnumber(10) primary key,
emailvarchar2 (60),
telvarchar2(20),
areaIDnumber(6)
)
partitionby range(areaID) subpartition by hash(memberID)
subpartitions 3 store in (tb_mb01, tb_mb02, tb_mb03)
(
partition part_ 01 values less than(200000),
partition part_02 values less than(400000),
partition part_03 values less than(999999)
);
该例中,先是根据行政区进行范围分区,然后根据memberID将记录散列地存储在三个表空间中。
更新分区表的记录:
update memberInfopartition(part_01)
set areaID= 310000
where memberID= 2;
或者
update memberInfo
set areaID= 310000
where memberID= 2;
删除分区表记录:
delete from memberInfo partition(part_01) where memberID= 2;
delete from memberInfo where memberID = 2;