アプリケーションに最適なインデックスは、予想されるクエリの種類、読み取りと書き込みの比率、システム上の空きメモリ容量など、いくつかの要因によって異なります。
インデックスを構築する前に、アプリケーションのクエリとアクセスするフィールドの計画を立てます。インデックスには パフォーマンスコストが伴いますが、大規模なデータセットで頻繁にクエリを実行する場合はコストに見合う価値があります。各クエリの頻度と、それがインデックスを正当化するかどうかを検討してください。
本番環境を表すデータに対して複数のインデックス構成をプロファイリングし、最もパフォーマンスの高いインデックス構成を見つけます。既存のインデックスを調査し、現在および計画中のクエリをサポートしていることを確認します。使用されなくなったインデックスを削除します。
通常、MongoDB はほとんどのクエリを実行するのに 1 つのインデックスしか使用しません。ただし、$or クエリの各句では異なるインデックスが使用される場合があります。
次のドキュメントでは、インデックスの作成戦略について紹介しています。
- ESR(等価、ソート、範囲)ガイドラインを使用します
- 等価操作、ソート操作、範囲操作を最適化するために複合インデックスキーを配列します。
- クエリをサポートするインデックスの作成
- インデックスは、クエリがスキャンするすべてのフィールドが含まれている場合にクエリをサポートし、パフォーマンスを大幅に向上させます。
- インデックスを使用したクエリ結果の並べ替え
- これらの戦略を使用して、インデックスフィールドの順序を指定し、効率的なソート クエリをサポートします。
- クエリに効率的に応答するために、選択的なインデックスを作成しましょう。
- インデックスの選択性がクエリのパフォーマンスにどのように影響するかを理解し、クエリに効率的に対処するインデックスを設計します。
- 一意のインデックスとスキーマバリデーション
- インデックスプロパティとスキーマ検証を組み合わせて、アプリケーション設計を実装します。