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

PolarDB:パーティション分割テーブルの作成

最終更新日:May 29, 2024

このトピックでは、パーティションテーブルを作成するための構文について説明し、さまざまな種類のパーティションテーブルを作成するためのサンプルステートメントを提供します。

構文

CREATE TABLE [スキーマ] 。 ]<table_name>
   <table_definition>
   リストによるパーティション (<列>) 
   [SUBPARTITION BY {RANGE | リスト | ハッシュ} (<column>[, <column> ]...)]
   (<list_partition_definition>[, <list_partition_definition>]...)
   [ENABLE ROW MOVEMENT];

list_partition_definitionは次のとおりです。

      PARTITION [<partition_name>]
        値 (<value>[, <value>]...)
        [TABLESPACE <tablespace_name>]
        [(<subpartition>, ...)]

1. 範囲分割構文
CREATE TABLE [スキーマ] 。 ]<table_name>
   <table_definition>
   RANGEによるパーティション (<column>[, <column> ]...)
   [SUBPARTITION BY {RANGE | リスト | ハッシュ} (<column>[, <column> ]...)]
   (<range_partition_definition>[, <range_partition_definition>]...)
   [ENABLE ROW MOVEMENT];

range_partition_definitionは次のとおりです。
      PARTITION [<partition_name>]
        より少ない値 (<value>[, <value>]...)
        [TABLESPACE <tablespace_name>]
        [(<subpartition>, ...)]
2. ハッシュ分割構文
CREATE TABLE [スキーマ] 。 ]<table_name>
   <table_definition>
   PARTITION BY HASH(<column>[, <column> ]...)
   [SUBPARTITION BY {RANGE | リスト | ハッシュ} (<column>[, <column> ]...)]
   (<hash_partition_definition>[, <hash_partition_definition>]...)
   [ENABLE ROW MOVEMENT];

hash_partition_definitionは次のとおりです。
      PARTITION [<partition_name>]
        [TABLESPACE <tablespace_name>]
        [(<subpartition>, ...)]

3. サブパーティショニング構文
{<list_subpartition> | <range_subpartition> | <hash_subpartition>}

list_subpartitionは次のとおりです。

      SUBPARTITION [<subpartition_name>]
        値 (<value>[, <value>]...)
        [TABLESPACE <tablespace_name>]

range_subpartitionは次のとおりです。

      SUBPARTITION [<subpartition_name>]
        より少ない値 (<value>[, <value>]...)
        [TABLESPACE <tablespace_name>]

hash_subpartitionは次のとおりです。

      SUBPARTITION [<subpartition_name>]
        [TABLESPACE <tablespace_name>] 

レンジパーティションテーブルの作成

CREATE TABLE sales(dept_no番号、日付)
範囲によるパーティー (日付)
(
  PARTITION q1_2012 VALUES LESS THAN('2012-Apr-01'),
  PARTITION q2_2012 VALUES LESS THAN('2012-Jul-01'),
  PARTITION q3_2012 VALUES LESS THAN('2012-Oct-01'),
  PARTITION q4_2012未満の値 ('2013-Jan-01 ')
); 

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

CREATE TABLE sales (dept_no number, country varchar2 (20))
リストによるパーティー (国)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITIONアメリカスバリュー (「米国」、「カナダ」)
); 

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

CREATE TABLE sales (dept_no number、part_no varchar2)
PARTITION BY HASH (part_no)
(
  PARTITION p1,
  PARTITION p2,
  パーティーp3
); 

サブパーティションを含むテーブルの作成

説明

PolarDB for PostgreSQL (Compatible with Oracle) では、パーティションテーブルを作成するときにパーティションを指定する必要があります。 サブパーティションを指定することもできます。 Oracle構文では、サブパーティションの下でのパーティション分割は許可されません。

テーブルの販売を作成する
(
  dept_no number,
  part_no varchar2,
  country varchar2(20),
  date date,
  金額番号
)
範囲によるパーティー (日付)
  SUBPARTITION BY LIST(country)
  (
    PARTITION q1_2012
      VALUES LESS THAN('2012-Apr-01')
      (
        SUBPARTITION q1_europe VALUES ('FRANCE', 'ITALY'),
        SUBPARTITION q1_asia VALUES ('INDIA', 'PAKISTAN'),
        SUBPARTITION q1_americas VALUES ('US', 'CANADA')
      ),
  PARTITION q2_2012
    VALUES LESS THAN('2012-Jul-01')
      (
        SUBPARTITION q2_europe VALUES ('FRANCE', 'ITALY'),
        SUBPARTITION q2_asia VALUES ('INDIA', 'PAKISTAN'),
        SUBPARTITION q2_americas VALUES ('US', 'CANADA')
      ),
  PARTITION q3_2012
    VALUES LESS THAN('2012-Oct-01')
      (
        SUBPARTITION q3_europe VALUES ('FRANCE', 'ITALY'),
        SUBPARTITION q3_asia VALUES ('INDIA', 'PAKISTAN'),
        SUBPARTITION q3_americas VALUES ('US', 'CANADA')
      ),
  PARTITION q4_2012
    VALUES LESS THAN('2013-Jan-01')
      (
        SUBPARTITION q4_europe VALUES ('FRANCE', 'ITALY'),
        SUBPARTITION q4_asia VALUES ('INDIA', 'PAKISTAN'),
        SUBPARTITION q4_americas VALUES ('US', 'CANADA')
      )
);