本文档介绍了创建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
(
  s_id        varchar(20),
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT,
  primary key (s_id, date)
)
PARTITION BY RANGE COLUMNS(date)
SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3
(
  PARTITION p1 VALUES LESS THAN('2023-01-01'),
  PARTITION p2 VALUES LESS THAN('2023-02-01'),
  PARTITION p3 VALUES LESS THAN('2023-03-01'),
  PARTITION p4 VALUES LESS THAN('2023-04-01')
);