Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

インデックスの考慮事項と管理

項目一覧

  • Overview
  • 操作上の考慮事項
  • サンプル データ
  • インデックスの作成
  • インデックスをリストする
  • インデックスを削除する
  • 単一インデックスの削除
  • すべてのインデックスを削除
  • API ドキュメント

このガイドでは、インデックスを使用してクエリの効率を向上させ、ドキュメントのクエリと保存に機能を追加する方法について説明します。

関連するインデックスがない場合、 MongoDBはコレクション内のすべてのドキュメントをスキャンして、クエリに一致するドキュメントを見つけます。これらのコレクションスキャンは遅く、アプリケーションのパフォーマンスに悪影響を与える可能性があります。ただし、適切なインデックスが存在する場合、 MongoDBはそのインデックスを使用して検査するドキュメントの数を減らすことができます。

クエリのパフォーマンスを向上させるには、ソートされた結果を返すアプリケーションのクエリや操作で頻繁に表示されるフィールドにインデックスをビルドします。追加する各インデックスはディスク領域とメモリを消費するため、キャパシティープランニングを行うときにメモリとディスクの使用量を追跡することをお勧めします。さらに、書込み操作によってインデックスフィールドが更新されると、 MongoDBは関連するインデックスを更新するため、書込み操作のパフォーマンスに悪影響を影響可能性があります。

MongoDBアプリケーションでワイルドカード インデックスを使用して、名前が事前に確認されていない、または任意のフィールドに対してクエリを実行できます。ワイルドカード インデックスは、ワークロードベースのインデックスプランニングを置き換えるように設計されていません

データモデルの設計とインデックスの選択の詳細については、 MongoDB Serverマニュアルの「 運用上の要因とデータモデル 」ガイドの「インデックス」セクションを参照してください。

このガイドの例では、 Atlas サンプル データセットsample_mflixデータベース内の moviesコレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。

MongoDBは、データのクエリに役立ついくつかのインデックスタイプをサポートしています。以下のページでは、さまざまなインデックスタイプについて説明し、各タイプのインデックスをプログラムで作成するためのサンプルコードを紹介します。

  • 単一フィールド インデックス

  • 複合インデックス

  • Multikey Indexes

  • Atlas Search インデックス

コレクションのインデックスのリストを取得するには、 MongoDB\Collection::listIndexes()メソッドを呼び出します。

foreach ($collection->listIndexes() as $indexInfo) {
echo $indexInfo;
}

_idフィールドのデフォルトの一意なインデックスを除く未使用のインデックスを削除できます。

次のセクションでは、コレクションから 1 つ以上のインデックスを削除する方法を示す例を示します。

インデックスの名前をMongoDB\Collection::dropIndex()メソッドに渡して、コレクションからインデックスを削除します 。

次の例ではmoviesコレクションから'_title_'インデックスを排除します。

$collection->dropIndex('_title_');

注意

複合インデックスから単一のフィールドを削除することはできません。インデックス フィールドを更新するには、インデックス全体を削除し、新しいインデックスを作成する必要があります。

コレクションでMongoDB\Collection::dropIndexes()メソッドを呼び出すと、すべてのインデックスを削除できます。

$collection->dropIndexes();

dropIndexes()メソッドは、削除されたインデックスの数に関する情報と成功メッセージを返します。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

戻る

インデックスを使用したクエリの最適化