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

语法

创建LIST-HASH分区表。一级分区是LIST [COLUMNS]类型,二级分区是HASH/KEY类型。
CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY LIST {(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 IN ( value_list)
        (subpartition_definition [, subpartition_definition] ...)
subpartition_definition为
SUBPARTITION subpartition_name

参数

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

示例

LIST-HASH类型的使用示例:
CREATE TABLE sales_list_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY LIST(amount)
SUBPARTITION BY HASH(TO_DAYS(date)) SUBPARTITIONS 2
(
  PARTITION p0 VALUES in (1, 2),
  PARTITION p1 VALUES in (3, 4),
  PARTITION p2 VALUES in (5, 6)
);
LIST COLUMNS-HASH类型的使用示例:
CREATE TABLE sales_list_columns_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY LIST COLUMNS(country)
SUBPARTITION BY HASH(TO_DAYS(date))
(
  PARTITION europe VALUES in ('FRANCE', 'ITALY')(
            SUBPARTITION s0,
            SUBPARTITION s1
        ),
  PARTITION asia VALUES in ('INDIA', 'PAKISTAN')(
            SUBPARTITION s2,
            SUBPARTITION s3
        ),
  PARTITION americas VALUES in ('US', 'CANADA')(
            SUBPARTITION s4,
            SUBPARTITION s5
        )
);