次のドキュメントを含むmongoデータベースにコレクションがあるとします
{
"name" : "abc",
"email": "abc@xyz.com",
"phone" : "+91 1234567890"
}
コレクションには多くのオブジェクト (100 万程度) があり、私のアプリケーションは、このコレクションに定期的にオブジェクトを追加する以外に、このデータに対していくつかの異なる種類の検索を行います。
1 つのメソッドは 3 つの属性 (名前、電子メール、電話番号) すべてで検索を行うため、これら 3 つのフィールドの複合インデックスを作成して、この検索が効率的に機能するようにします。
db.mycollection.ensureIndex({name:1,email:1,phone:1})
現在、アプリケーションには、同じ名前のすべてのオブジェクトを取得するメソッドもあります (悪い例です)。そのため、名前フィールドのインデックスが必要です。
db.mycollection.ensureIndex({name:1})
私のアプリケーションは徐々に成長し、他のフィールドにインデックスを付ける必要があります。
さて、私の質問です。各属性に個別にインデックスを付けた場合でも、3 つすべての属性 (または 2 つの属性) の複合インデックスを維持することは理にかなっていますか?
明らかに、これは悪い例です...個人の複数の連絡先情報を格納するコレクションを作成する場合は、配列を使用します。ただし、この質問は純粋にインデックスに関するものです。