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

语法

创建一个或多个LIST-RANGE分区表,其中每个分区可能有一个或一个以上的子分区:
CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY LIST {(expr) | COLUMNS(column_list)}
   SUBPARTITION BY LIST(expr)
   (partition_definition [, partition_definition] ...);
其中,partition_definition为:
 PARTITION partition_name
        VALUES IN (value_list)
        (subpartition_definition [, subpartition_definition] ...)
其中,subpartition_definition为:
SUBPARTITION subpartition_name
      VALUES LESS THAN {value | MAXVALUE}

参数

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

示例

LIST-RANGE类型的使用示例:
CREATE TABLE sales_list_range
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY LIST (amount)
SUBPARTITION BY RANGE(month(date))
(
  PARTITION p0 VALUES in (1, 2)(
    SUBPARTITION q1_2012 VALUES LESS THAN(4),
    SUBPARTITION q2_2012 VALUES LESS THAN(7),
    SUBPARTITION q3_2012 VALUES LESS THAN(10),
    SUBPARTITION q4_2012 VALUES LESS THAN(13)
  ),
  PARTITION p1 VALUES in (3, 4)(
    SUBPARTITION q1_2013 VALUES LESS THAN(4),
    SUBPARTITION q2_2013 VALUES LESS THAN(7),
    SUBPARTITION q3_2013 VALUES LESS THAN(10),
    SUBPARTITION q4_2013 VALUES LESS THAN(13)
  ),
  PARTITION p2 VALUES in (5, 6)(
    SUBPARTITION q1_2014 VALUES LESS THAN(4),
    SUBPARTITION q2_2014 VALUES LESS THAN(7),
    SUBPARTITION q3_2014 VALUES LESS THAN(10),
    SUBPARTITION q4_2014 VALUES LESS THAN(13)
  )
);
LIST COLUMNS-RANGE类型的使用示例:
CREATE TABLE sales_list_columns_range
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY LIST COLUMNS(country)
SUBPARTITION BY RANGE(month(date))
(
  PARTITION europe VALUES in ('FRANCE', 'ITALY')(
    SUBPARTITION q1_2012 VALUES LESS THAN(4),
    SUBPARTITION q2_2012 VALUES LESS THAN(7),
    SUBPARTITION q3_2012 VALUES LESS THAN(10),
    SUBPARTITION q4_2012 VALUES LESS THAN(13)
  ),
  PARTITION asia VALUES in ('INDIA', 'PAKISTAN')(
    SUBPARTITION q1_2013 VALUES LESS THAN(4),
    SUBPARTITION q2_2013 VALUES LESS THAN(7),
    SUBPARTITION q3_2013 VALUES LESS THAN(10),
    SUBPARTITION q4_2013 VALUES LESS THAN(13)
  ),
  PARTITION americas VALUES in ('US', 'CANADA')(
    SUBPARTITION q1_2014 VALUES LESS THAN(4),
    SUBPARTITION q2_2014 VALUES LESS THAN(7),
    SUBPARTITION q3_2014 VALUES LESS THAN(10),
    SUBPARTITION q4_2014 VALUES LESS THAN(13)
  )
);