本文档介绍了创建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)
)
);