PolarDB for MySQLを使用すると、パーティションテーブルに部分インデックスを作成できます。 インデックスは、すべてのパーティションではなく、パーティションテーブルの1つ以上のパーティションにのみ作成できます。 パーティションテーブルのパーティションに異なるインデックスを作成して、さまざまなパーティションのクエリ要件を満たし、ストレージスペースを節約できます。
シナリオ
注文テーブルまたはログテーブル
注文テーブルまたはログテーブルが使用されるシナリオでは、通常、時間ベースのレンジパーティションテーブルが作成されます。 ただし、最新の1つまたは2つのパーティションのみが頻繁に照会されます。 セカンダリインデックスは、頻繁に照会されるパーティションにのみ作成できます。 ただし、ネイティブMySQLおよびその他のデータベースでは、すべてのパーティションで同じインデックスを作成できるだけです。 これはホットスポットパーティションのクエリ要件を満たすことができますが、パーティションで作成されるセカンダリインデックスには大きなスペースが消費されます。
上記のシナリオでは、パーティションテーブルに部分インデックスを作成できます。 必要なセカンダリインデックスのみがホットパーティションに作成されます。 これにより、ホットパーティションのクエリ要件を満たすだけでなく、パーティションに作成されるセカンダリインデックスのスペースも節約できます。
履歴データの照会と分析
履歴データが照会および分析されるシナリオでは、通常、時間ベースのレンジパーティションが作成されます。 新しいパーティションでは、データをすばやく挿入して簡単なクエリを実行できます。 データ分析のための大規模なクエリのほとんどは、履歴パーティションで実行されます。 履歴パーティションのクエリと分析の要件を満たすために、複数のセカンダリインデックスを作成できます。 ただし、パーティションに作成されるインデックスが増えると、データの書き込み速度が低下します。
上記のシナリオでは、パーティション分割テーブルに部分インデックスを作成できます。ホットパーティションでは単純なクエリのセカンダリインデックスを作成し、履歴パーティションでは分析クエリのセカンダリインデックスを作成します。
さまざまなビジネス要件に基づいてパーティションにさまざまなインデックスを作成すると、ホットパーティションにデータを挿入するパフォーマンスが保証され、履歴パーティションのクエリおよび分析要件も満たされます。 さらに、パーティションに作成されたセカンダリインデックスのスペースが最大限に節約されます。
前提条件
クラスターは、リビジョンバージョンが8.0.2.2.21以降のPolarDB for MySQL 8.0.2を実行します。 クラスターのバージョンを確認するには、「エンジンバージョン」トピックの「エンジンバージョンの照会」セクションを参照してください。
制限
プライマリキーに部分インデックスを作成することはできません。
グローバルセカンダリインデックス (GSI) を部分インデックスとして作成することはできません。 ただし、グローバルセカンダリインデックスと部分インデックスを同じパーティションテーブルに作成できます。
FULLTEXT型およびSPATIAL型のインデックスを部分インデックスとして作成することはできません。
オプティマイザは、アクセスするパーティションテーブルの既存のインデックスのみを選択できます。
使用法
パーティションテーブルに部分インデックスを作成できます。 部分インデックスを作成したら、部分インデックスを変更できます。 部分インデックスを作成および変更する方法の詳細については、部分インデックスの作成と部分インデックスの変更.
パーティションテーブルに部分インデックスを作成する機能は、カナリアリリースにあります。 この機能を使用するには、DingTalkグループ24490017825に参加してテクニカルサポートを取得します。