全部產品
Search
文件中心

PolarDB:RANGE-HASH

更新時間:Jul 11, 2025

本文檔介紹了建立RANGE-HASH分區表的方法。

文法

建立RANGE-HASH分區表。一級分區是RANGE [COLUMNS] 類型,二級分區是HASH/KEY類型。

CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY RANGE {(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 LESS THAN {(expr | value_list) | MAXVALUE}
        (subpartition_definition [, subpartition_definition] ...)

subpartition_definition為

SUBPARTITION subpartition_name

參數

參數名稱

參數說明

expr

分區欄位運算式,目前只支援INT類型,不支援字元類型。

column_list

分區欄位列表,不支援運算式。

number

子分區的數量。

value

分區邊界值。

value_list

RANGE COLUMNS的情況下使用,多個欄位的邊界值。

MAXVALUE

最大值。

partition_name

分區名稱,同一個表中不可重複。

subpartition_name

子分區名稱,同一個表中不可重複。

樣本

  • 一級分區採用RANGE (expr)類型。其中,expr為分區欄位運算式,且僅支援INT類型,不支援字元類型。

    CREATE TABLE sales_range_hash_1
    (
      s_id        varchar(20),
      dept_no     INT,
      part_no     INT,
      country     varchar(20),
      date        DATE,
      amount      INT,
      primary key (s_id, amount)
    )
    PARTITION BY RANGE (amount)
    SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3
    (
      PARTITION p1 VALUES LESS THAN (1000),
      PARTITION p2 VALUES LESS THAN (2000),
      PARTITION p3 VALUES LESS THAN (3000),
      PARTITION p4 VALUES LESS THAN (4000)
    );
  • 一級分區採用RANGE COLUMNS(column_list)類型。其中,column_list為分區欄位列表,且不支援運算式。

    CREATE TABLE sales_range_hash_2
    (
      s_id        varchar(20),
      dept_no     INT,
      part_no     INT,
      country     varchar(20),
      date        DATE,
      amount      INT,
      primary key (s_id, date)
    )
    PARTITION BY RANGE COLUMNS(date)
    SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3
    (
      PARTITION p1 VALUES LESS THAN('2023-01-01'),
      PARTITION p2 VALUES LESS THAN('2023-02-01'),
      PARTITION p3 VALUES LESS THAN('2023-03-01'),
      PARTITION p4 VALUES LESS THAN('2023-04-01')
    );