すべてのプロダクト
Search
ドキュメントセンター

PolarDB:RANGE-HASH

最終更新日:Jul 09, 2025

このトピックでは、範囲ハッシュパーティションテーブルの作成方法について説明します。

構文

次の文は、RANGE-HASH パーティションテーブルを作成します。第 1 レベルのパーティションは RANGE [COLUMNS] タイプで、第 2 レベルのパーティションは 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

サブパーティションの名前。名前は同じテーブル内で一意である必要があります。

  • 第 1 レベルのパーティションは、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(expr) を使用した範囲ハッシュパーティションテーブルの作成例 */
    
  • 第 1 レベルのパーティションは、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')
    );
    /* RANGE COLUMNS(column_list) を使用した範囲ハッシュパーティションテーブルの作成例 */