创建分区表

可以使用 CREATE TABLE 语句来创建新的分区表。

表定义必须包含表名称以及表中列的名称和属性。 该定义还可能包含表的其他属性,例如主键。

有两种可用于分区的方法: 散列分区和范围分区。 散列分区以随机间隔放置用户指定数量的分区和键列中的行。 范围分区根据用户指定的列值范围来划分表。 指定要与 PARTITION BY 子句配合使用的分区类型。 例如,要将具有分区键 EMPNUM 的库 PRODLIB 中的分区表 PAYROLL 分区为四个分区,请使用以下代码:

CREATE TABLE PRODLIB.PAYROLL
	(EMPNUM INT,
	 FIRSTNAME CHAR(15),
    LASTNAME CHAR(15),
    SALARY INT)
PARTITION BY HASH(EMPNUM)
INTO 4 PARTITIONS

或者,要按范围对 PAYROLL 进行分区,请使用以下代码:

CREATE TABLE PRODLIB.PAYROLL
	(EMPNUM INT,
	 FIRSTNAME CHAR(15),
    LASTNAME CHAR(15),
    SALARY INT)
PARTITION BY RANGE(EMPNUM)
(STARTING FROM (MINVALUE) ENDING AT (500) INCLUSIVE, 
STARTING FROM (501) ENDING AT (1000) INCLUSIVE, 
STARTING FROM (1001) ENDING AT (MAXVALUE))

此语句将生成一个包含三个分区的表。 第一个分区包含 EMPNUM 小于或等于 500 的所有行。 第二个分区包含 EMPNUM 在 501 到 1000 之间 (含 501 和 1000) 的所有行。 第三个分区包含 EMPNUM 大于或等于 1001 的所有行。 下图显示了一个表,其中的数据根据这些值进行了分区。

图 1。 员工信息分区
此图显示按范围分区的员工信息表

创建分区表时,将向每个分区添加系统提供的检查约束。 用户无法显示,变更或除去此检查约束。

对于范围分区,此检查约束验证数据是否在正确的范围内。 或者,如果分区允许空值,那么检查约束将验证数据是否为空。

对于散列分区,此检查约束根据条件 Partition number = MOD(Hash(fields), Number of partitions) + 1 验证数据,其中散列函数返回 0 到 1023 之间的值。 空值始终放置在第一个分区中。

请参阅 SQL 参考主题集合中的 CREATE TABLE 语句以获取分区子句和语法图。