幅の広いテーブルのパフォーマンスに関する考慮事項

幅の広いテーブルは、列セットを含むテーブルです。幅の広いテーブルを使用する場合は、パフォーマンスに関する次の点を考慮してください。

  • 幅の広いテーブルでは、最大 30,000 列を定義できます。このため、テーブルのインデックスの管理にかかるコストが増加します。定義された非クラスタ化インデックスは、データのサブセットに適用されるフィルタ選択されたインデックスにする必要があります。詳細については、「フィルター選択されたインデックスのデザイン ガイドライン」を参照してください。

  • アプリケーションでは、幅の広いテーブルから動的に列を追加したり削除したりできます。列が追加または削除された場合、コンパイルされたクエリ プランも無効になります。スキーマの変更が最小限になるように、予測されるワークロードに合わせてアプリケーションを設計することをお勧めします。

  • データが幅の広いテーブルから追加および削除される場合、パフォーマンスに影響が生じる可能性があります。テーブルに対する変更が最小限になるように、予測されるワークロードに合わせてアプリケーションを設計する必要があります。

  • 幅の広いテーブルのインデックスの数は、ビジネス ロジックで必要なインデックスの数に制限することをお勧めします。インデックスの数が増加すると、DML のコンパイル時間および必要なメモリ容量も増加します。

  • クラスタ化キーの複数の行を更新する、幅の広いテーブル上での DML ステートメントの実行を制限します。これらのステートメントのコンパイルおよび実行には、大量のメモリ リソースが必要になる場合があります。

  • 幅の広いテーブルでのパーティションの切り替え操作は、実行速度が遅く、処理に大量のメモリが必要になる場合があります。パフォーマンスおよびメモリの要件は、切り替え元のパーティションと切り替え先のパーティションの両方の列の合計数に比例します。

  • 幅の広いテーブルの特定の列を更新する更新カーソルは、FOR UPDATE 句で明示的に列を列挙する必要があります。これは、カーソルを使用する場合にパフォーマンスを最適化するのに役立ちます。