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;