Die Reihenfolge der Felder im Index ist wichtig; Der beste zusammengesetzte Index für Ihr Such- und Sortierbeispiel wäre tatsächlich:
db.test.ensure_index([("xxx",1),("_id",-1)])
Da sich Ihre Suchkriterien auf dem Feld „xxx“ befinden, werden mehr Ergebnisse gefunden, wenn Sie dieses Feld an erster Stelle im Index platzieren, als wenn Sie nach _id
suchen und dann nach Dokumenten filtern, die mit Ihrem xxx
übereinstimmen Kriterien.
Wenn Sie sich das n
ansehen Nummer für jeden Plan, der vom Abfrageoptimierer in allPlans
berücksichtigt wird , der BtreeCursor xxx_1
index liefert tatsächlich die meisten Ergebnisse (34). Die anderen Indizes geben 9, 10 und 16 Ergebnisse zurück .. wären also weniger effizient für die angegebenen Suchkriterien.
Für weitere Informationen zur Indexoptimierung ist dieser Artikel sehr hilfreich:Optimizing MongoDB Compound Indexes .