インデックスの作成に関する戦略
アプリケーションに最適なインデックスは、予想されるクエリの種類、読み取りと書き込みの比率、システム上の空きメモリ容量など、さまざまな要素を考慮する必要があります。
インデックス戦略を開発する際には、アプリケーションのクエリを深く理解しておく必要があります。インデックスを構築する前に、実行するクエリの種類の計画を立て、それらのフィールドを参照するインデックスを構築できるようにします。インデックスにはパフォーマンスコストが伴いますが、大規模なデータセットで頻繁にクエリを実行する場合はコストに見合うだけの価値があります。アプリケーション内の各クエリの相対的な頻度と、そのクエリがインデックスを正当化するかどうかを検討してください。
インデックスを設計するための全体的な最善の戦略は、本番環境で実行するデータセットと同様のデータセットを使用してさまざまなインデックス構成をプロファイリングし、どの構成が最も効果的かを確認することです。コレクション用に作成されている現在のインデックスを調査し、現在および計画中のクエリをサポートしていることを確認します。インデックスが使用されなくなった場合は削除します。
通常、MongoDB はほとんどのクエリを実行するのに 1 つのインデックスしか使用しません。ただし、$or
クエリの各句では異なるインデックスが使用される場合があります。
次のドキュメントでは、インデックスの作成戦略について紹介しています。
- ESR(Equality, Sort, Range)ルールを使用する
- ESR(Equality, Sort, Range)ルールは、クエリを効率的にサポートするインデックスを作成するためのガイドです。
- クエリをサポートするインデックスの作成
- インデックスは、クエリによってスキャンされたすべてのフィールドがインデックスに含まれている場合にクエリをサポートします。クエリをサポートするインデックスを作成すると、クエリのパフォーマンスが大幅に向上します。
- インデックスを使用したクエリ結果の並べ替え
- 効率的なクエリをサポートするには、インデックス フィールドの順序とソート順序を指定する場合に、ここで説明した戦略を使用してください。
- クエリの選択性を確保するためのインデックスの作成
- 選択性とは、インデックスを使用して結果を絞り込むクエリの能力のことです。選択性があれば、MongoDB は、クエリを実行する作業の大部分にインデックスを使うことができます。