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

PolarDB:パーティションの作成

最終更新日:Jun 28, 2024

既存のパーティションテーブルにパーティションを作成できます。 このトピックでは、パーティションを作成するためのステートメントと例について説明します。

構文

ALTER TABLE <table_name> ADD PARTITION <partition_definition>;

Where partition_definition is:
        {<list_partition> | <range_partition>}

and list_partition is:
        PARTITION [<partition_name>]
          VALUES (<value>[, <value>]...)
          [TABLESPACE <tablespace_name>]
          [(<subpartition>, ...)]

and range_partition is:
        PARTITION [<partition_name>]
          VALUES LESS THAN (<value>[, <value>]...)
          [TABLESPACE <tablespace_name>]
          [(<subpartition>, ...)]

Where subpartition is:
        {<list_subpartition> | <range_subpartition> | <hash_subpartition>}

and list_subpartition is:
        SUBPARTITION [<subpartition_name>]
          VALUES (<value>[, <value>]...)
          [TABLESPACE <tablespace_name>]

and range_subpartition is:
        SUBPARTITION [<subpartition_name>]
          VALUES LESS THAN (<value>[, <value>]...)
          [TABLESPACE <tablespace_name>]

パーティションの作成

範囲パーティションの作成

CREATE TABLE tab_range_p1 PARTITION OF tab_range FOR VALUES FROM (minvalue) TO (100);

リストパーティションの作成

CREATE TABLE tab_list_p1 PARTITION OF tab_list FOR VALUES IN (10, 20, 30);

ハッシュパーティションの作成

CREATE TABLE tab_hash_0 PARTITION OF tab_hash FOR VALUES WITH (modulus 2, remainder 1);

マルチレベルパーティションの作成

PolarDB for PostgreSQL (Oracle互換) を使用すると、パーティションをさらにサブパーティションに分割し、パーティション分割戦略の組み合わせを使用できます。

マルチレベル範囲パーティションの作成

CREATE TABLE tab_range_p1 PARTITION OF tab_range FOR VALUES FROM (minvalue) TO (100) PARTITION BY List (value);

マルチレベルリストパーティションの作成

CREATE TABLE tab_list_p1 PARTITION OF tab_list FOR VALUES IN (10, 20, 30) PARTITION BY hash (value);

マルチレベルハッシュパーティションの作成

CREATE TABLE tab_hash_0 PARTITION OF tab_hash FOR VALUES WITH (modulus 2, remainder 1) PARTITION BY range (value);