パーティションテーブルの作成時に部分インデックスを作成するか、既存のパーティションテーブルに部分インデックスを作成できます。
パーティションテーブルの作成時に部分インデックスを作成する
構文
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_1
、p1_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));