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

PolarDB:部分インデックスの作成

最終更新日:Jun 04, 2024

パーティションテーブルの作成時に部分インデックスを作成するか、既存のパーティションテーブルに部分インデックスを作成できます。

パーティションテーブルの作成時に部分インデックスを作成する

構文

CREATE [一時] TABLE [存在しない場合] table_name
    [(create_definition,...)]
    [table_options]
    partition_options
     ...

create_definitionは次のとおりです。

{
    col_name column_definition
  | {INDEX | KEY} [index_name] [index_type] (key_part,...)
      [index_option] [partial_partition_option]
      ...
}

partial_partition_optionは次のとおりです。

([PARTITION partition_name0[(SUBPARTITION subpartition_name0[,...]))][,...]
 )

構文の他のパラメーターについては、「CREATE TABLE」をご参照ください。

Parameters

パラメーター

説明

table_name

<td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td>

col_name

列名

partition_name0

パーティション名。

説明

複数のパーティションを指定できます。 複数のパーティション名はコンマ (,) で区切ります。

subpartition_name0

サブパーティション名。

説明

複数のサブパーティションを指定できます。 複数のサブパーティション名をコンマ (,) で区切ります。

  • パーティションに部分インデックスを作成する

    次のサンプルコードは、ordersという名前のパーティションテーブルを作成し、12月のorders_202212パーティションにo_ind_dp(dept_no, part_no) という名前の部分インデックスを作成し、他の履歴パーティションにo_ind_amout(amount, order_id) という名前の部分インデックスを作成する方法を示しています。

    テーブル注文を作成する
    (
      order_id INT,
      dept_no INT、
      part_no INT,
      国varchar(20) 、
      日付,
      金額INT、
      主キー (order_id) 、
      KEY o_ind_dp(dept_no, part_no) (パーティションorders_202212) 、
      KEY o_ind_amout(amount, order_id) 
       (パーティションorders_202201、
        パーティションorders_202202,
        パーティションorders_202203,
        パーティションorders_202204、
        パーティションorders_202205,
        パーティションorders_202206、
        パーティションorders_202207、
        パーティションorders_202208,
        パーティションorders_202209,
        パーティションorders_202210、
        パーティションorders_202211
       )
    )
    レンジによるパーティー (月 (日付))
    (
      PARTITION orders_202201値が (2) より少ない、
      PARTITION orders_202202より少ない値 (3) 、
      PARTITION orders_202203値がより少ない (4) 、
      PARTITION orders_202204値が5未満、
      PARTITION orders_202205値がより少ない (6) 、
      PARTITION orders_202206値は以下 (7) 、
      PARTITION orders_202207値は (8) より少なく、
      PARTITION orders_202208値は (9) より少なく、
      PARTITION orders_202209値は (10) より少なく、
      PARTITION orders_202210値は (11) より少なく、
      PARTITION orders_202211値は (12) より少なく、
      PARTITION orders_202212値がより少ない (13)
    ); 
  • サブパーティションに部分インデックスを作成する

    次のサンプルコードは、テナントという名前のLIST-RANGEサブパーティションテーブルを作成し、p0パーティションのすべてのサブパーティションと、p1パーティションのp1_1p1_2、およびp1_3サブパーティションにind_idという名前の部分インデックスを作成する方法を示しています。次に、p0パーティションのp0_1およびp0_2サブパーティション、およびp1パーティションのp1_1およびp1_2サブパーティションにind_dateという名前の部分インデックスを作成します。

    CREATE TABLEテナント (
      id INT,
      日付,
      カウントINT、
      KEY ind_id (id) (
        パーティションp0, 
        パーティションp1 (サブパーティションp1_1、サブパーティションp1_2、サブパーティションp1_3)
      ), 
      KEY ind_date (日付) (
        パーティションp0 (サブパーティションp0_1、サブパーティションp0_2) 、
        パーティションp1 (サブパーティションp1_1、サブパーティションp1_2)
      )
    ) リストコラムによるパーティー (id)
      範囲によるサブパート (月 (日付))(
      PARTITION p0の値 (1、2、3、4、5) (
        サブパートp0_1の値は (4) よりも少なく、
        サブパートp0_2の値は以下 (7) 、
        サブパートp0_3の値が (10) 未満、
        サブパートp0_4の値が (13)
      ),
      パーティションp1の値 (11、12、13、14、15) (
        サブパートp1_1の値は (4) 未満、
        サブパートp1_2の値は (7) より少なく、
        サブパートp1_3の値は (10) 未満、
        下位分類p1_4の値は (13) より少ない
      )
    );

既存のパーティションテーブルに部分インデックスを作成する

構文

CREATE [UNIQUE] INDEX index_name
    [index_type]
    ON table_name (key_part、...)
    [index_option]
    [algorithm_option | lock_option | partial_partition_option] ... 

partial_partition_optionは次のとおりです。

([PARTITION partition_name0[(SUBPARTITION subpartition_name0[,...]))][,...]
  )

構文の他のパラメーターについては、「CREATE INDEX」をご参照ください。

Parameters

パラメーター

説明

index_name

インデックス名。

table_name

<td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td>

partition_name0

パーティション名。

説明

複数のパーティションを指定できます。 複数のパーティション名はコンマ (,) で区切ります。

subpartition_name0

サブパーティション名。

説明

複数のサブパーティションを指定できます。 複数のサブパーティション名をコンマ (,) で区切ります。

  • パーティションに部分インデックスを作成する

    次のサンプルコードは、ordersパーティションテーブルのorders_202201パーティションにo_part_idという名前の部分インデックスを作成する方法を示しています。

    CREATE INDEX o_part_idオン注文 (part_no、order_id) (パーティションorders_202201);

    ALTER TABLE ADD KEYステートメントを実行して、前の例の部分インデックスを作成することもできます。

    ALTER TABLE注文ADD KEY o_part_id(part_no、order_id) (パーティションorders_202201);
  • サブパーティションに部分インデックスを作成する

    次のサンプルコードは、テナントパーティション分割テーブルのp0パーティションのすべてのサブパーティションとp1パーティションのp1_1サブパーティションにind_countという名前の部分インデックスを作成する方法を示しています。

    CREATE INDEX ind_count ONテナント (count) (パーティションp0、パーティションp1 (サブパーティションp1_1));

    ALTER TABLE ADD KEYステートメントを実行して、前の例の部分インデックスを作成することもできます。

    ALTER TABLEテナントADD KEY ind_count(count) (パーティションp0、パーティションp1 (サブパーティションp1_1));