全部產品
Search
文件中心

PolarDB:CREATE TABLE ... PARTITION BY HASH

更新時間:Jul 06, 2024

PolarDB PostgreSQL版(相容Oracle)提供了一種簡潔的文法用於建立指定分區數量的HASH分區表。

建立HASH分區

文法:

CREATE TABLE ... PARTITION BY HASH (part_params) PARTITIONS number ;

參數說明如下。

參數說明
part_params分區欄位。
numberHASH分區數量。

樣本如下:

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分區表類型,支援如下:
  • RANGE
  • LIST
  • HASH
part_params分區欄位。
table_partitions_list分區定義列表。
numberHASH子分區數量。
  • 分區類型為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;

相關文檔

CREATE TABLE...PARTITION BY