本文档介绍了创建RANGE-HASH分区表的方法。

语法

创建RANGE-HASH分区表。一级分区是RANGE [COLUMNS] 类型,二级分区是HASH/KEY类型。
CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
   SUBPARTITION BY {[LINEAR] HASH(expr) [SUBPARTITIONS number]
   | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)}
   (partition_definition [, partition_definition] ...);
其中,partition_definition为
 PARTITION partition_name
        VALUES LESS THAN {(expr | value_list) | MAXVALUE}
        (subpartition_definition [, subpartition_definition] ...)
subpartition_definition为
SUBPARTITION subpartition_name

参数

参数名称 参数说明
expr 分区字段表达式,目前只支持INT类型,不支持字符类型。
column_list 分区字段列表,不支持表达式。
number 子分区的数量。
value 分区边界值。
value_list RANGE COLUMNS的情况下使用,多个字段的边界值。
MAXVALUE 最大值。
partition_name 分区名称,同一个表中不可重复。
subpartition_name 子分区名称,同一个表中不可重复。

示例

RANGE-HASH类型的使用示例:
CREATE TABLE sales_range_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY RANGE(month(date))
SUBPARTITION BY HASH(TO_DAYS(date)) SUBPARTITIONS 2
(
  PARTITION q1_2012 VALUES LESS THAN(4),
  PARTITION q2_2012 VALUES LESS THAN(7),
  PARTITION q3_2012 VALUES LESS THAN(10),
  PARTITION q4_2012 VALUES LESS THAN(13)
);
RANGE COLUMNS-HASH类型的使用示例:
CREATE TABLE sales_range_columns_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY RANGE COLUMNS(dept_no, part_no)
SUBPARTITION BY HASH(TO_DAYS(date)) SUBPARTITIONS 2
(
  PARTITION dp1 VALUES LESS THAN(1000, MAXVALUE),
  PARTITION dp2 VALUES LESS THAN(2000, MAXVALUE),
  PARTITION dp3 VALUES LESS THAN(3000, MAXVALUE),
  PARTITION dp4 VALUES LESS THAN(4000, MAXVALUE)
);