Oracle表的分区设计和创建(oracle表分区的创建)

Oracle表的分区设计和创建

Oracle数据库提供了表分区的技术,它可以将一个大表分成多个小表,使用户可以更快速的查询数据。表的分区是结合多种技术,根据每个分区的字段类型与表的列类型进行划分。本文介绍Oracle表的分区设计及其创建的过程。

一、表的分区设计

表的分区设计有四种模式: Range Partition、Hash Partition、List Partition 以及 Composite Partition(Range-Hash Partition)。

1.Range Partition: 是按照值的范围进行切分,可以使用时间戳(按月/按年),值范围,某一范围内切分,此时此刻等作为切分依据,也可以使用列表、哈希等方式切分。

例如,create table student_info(name varchar2(10),age number) partition by range (age)

(PARTITION p1 values less than (10), PARTITION p2 values less than (20), PARTITION p3 values less than (maxvalue));

可以将age为10以下的记录放入P1,age为11-20的记录放入P2,age大于20的记录放入P3。

2.Hash Partition: 按照Hash算法将表分成多个分区,根据哈希函数计算每一条记录在参与哈希计算的分区指定字段的值,然后把每个分区的数据存在不同的分区中。

例如:create table student_info(name varchar2(10),age number) partition by hash (age)

partitions 10; 通过哈希函数将整个表分成10个分区,每个分区里存放age值相同的记录。

3.List Partition: 按照列表值进行分区,一个分区的范围由一个列表定义,所有非列表中的值都存放在一个缺省分区中。

例如:create table student_info(name varchar2(10),age number) partition by list (age)

(partition p1 values (11,12,13), partition p2 values (14,15,16), partition p3 values (default));

该语句将15 以下的记录存放在 p1 分区内,15-16 的记录存放在 p2 分区内,其他的记录存储在 P3 分区内。

4.Composite Partition(Range-Hash Partition ): 是综合 List、 Range 以及 Hash 分区的方式,将父分区按照 List 或者 Range 分区,子分区则按照 hash 分区,更加细致的进行表的分区,可以更快的查找出所需的数据。

例如:create table student_info(name varchar2(10),age number) partition by range (age) subpartition by hash (age)

partitions 3

subpartitions 5;

即范围分区分成3个”超级分区”,每个”超级分区”再分成5个更小的”子分区”,从而使原本较大表格更加细粒度。

二、Oracle表的创建

createtabletablename (

column1 datatype [not null][,column2 datatype [not null] …]

)

partition by

{range[column]

|hash[column]

|list[column]

|composite[range-hash][column]

}

[subpartition …]

语句部分包括表创建的命令,以及分区模式的定义。

例:create table student_info(name varchar2(10),age number)

partition by range (age)

(PARTITION p1 values less than (10), PARTITION p2 values less than (20), PARTITION p3 values less than (maxvalue));

该语句可以用来创建一个range 分区模式下的表,将age为10以下的记录放入P1,age为11-20的记录放入P2,age大于20的记录放入P3。

综上所述,Oracle表的分区设计和创建可以按照Range Partition 、Hash Partition 、List Partition 以及 Composite Partition 的方式组合来实现,可以大大提升数据库的查询速度,提高数据库查询的质量。


数据运维技术 » Oracle表的分区设计和创建(oracle表分区的创建)