ORACLE 表分区
范围分区:根据值的范围对表进行分区。
创建语句
create table test ( id varchar2(10), partition_number int ) partition by range(partition_number) ( partition part1 values less than(60), partition part2 values less than(85), partition part3 values less than(maxvalue) )
查询语句
select * from test; select * from test partition(part1); select * from test partition(part2); select * from test partition(part3);
散列分区(hash):散列分区通过在分区键值上执行一个散列函数来决定数据的物理位置。散列分区把记录分区分布在比范围分区更多的分区上,这降低了I/O争用的可能性。
创建语句
create table test ( id varchar2(10), partition_number int ) partition by hash(partition_number) partitions 2; --或者 create table test ( id varchar2(10), partition_number int ) partition by hash(partition_number) ( partition part1, partition part2 );
列表分区:告诉oracle所有可能的值,并指定应该插入相应行的分区。
创建语句
create table test ( id varchar2(10), partition_number int ) partition by list(partition_number) ( partition part1 values (10), partition part2 values (20) );
复合分区(list-hash):
创建语句
create table test ( id varchar2(10), partition_number int ) partition by list(partition_number) subpartition by hash (id) subpartitions 32 ( partition part1 values (10), partition part2 values (20) );
查看表分区语句
SELECT * FROM ALL_TAB_PARTITIONS; SELECT * FROM USER_TAB_PARTITIONS;