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