PolarDB PostgreSQL版(兼容Oracle)提供了一种简洁的语法用于创建指定分区数量的HASH分区表。
创建HASH分区
语法:
CREATE TABLE ... PARTITION BY HASH (part_params) PARTITIONS number ;
参数说明如下。
参数 | 说明 |
---|---|
part_params | 分区字段。 |
number | HASH分区数量。 |
示例如下:
CREATE TABLE part_hash (deptno NUMBER, deptname VARCHAR(32))
PARTITION BY HASH(deptno) PARTITIONS 4;
创建HASH子分区
语法:
CREATE TABLE ... PARTITION BY part_strategy ( part_params ) SUBPARTITION BY HASH ( part_params) SUBPARTITIONS number ( table_partitions_list );
参数说明如下。
参数 | 说明 |
---|---|
part_strategy | 分区表类型,支持如下:
|
part_params | 分区字段。 |
table_partitions_list | 分区定义列表。 |
number | HASH子分区数量。 |
- 分区类型为RANGE,子分区类型为HASH,示例如下:
CREATE TABLE part_test ( prod_id NUMBER(6), cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6), quantity_sold NUMBER(3), amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) SUBPARTITION BY HASH (cust_id) SUBPARTITIONS 4 ( PARTITION sales_q1_2006 VALUES LESS THAN (TO_DATE('01-APR-2006','dd-MON-yyyy'))( SUBPARTITION q1_europe, SUBPARTITION q1_asia , SUBPARTITION q1_americas ), PARTITION sales_q2_2006 VALUES LESS THAN (TO_DATE('01-JUL-2006','dd-MON-yyyy')), PARTITION sales_q3_2006 VALUES LESS THAN (TO_DATE('01-OCT-2006','dd-MON-yyyy')), PARTITION sales_q4_2006 VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy')) );
- 分区和子分区类型均为HASH,示例如下:
CREATE TABLE part_test ( prod_id NUMBER(6), cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6), quantity_sold NUMBER(3), amount_sold NUMBER(10,2) ) PARTITION BY HASH (prod_id) SUBPARTITION BY HASH (cust_id) PARTITIONS 4 SUBPARTITIONS 4;