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 的方式组合来实现,可以大大提升数据库的查询速度,提高数据库查询的质量。