wenn zum Indizieren auf mehreren Tasten in mongodb
-
26-09-2019 - |
Frage
sagen, ich habe ein Item Dokument mit: Preis und: Menge Feldern aus. Ich möchte manchmal alle Dokumente finden, um eine gegebene Anpassung: Preis AND: Menge, und zu anderen Zeiten wird es entweder: Preis für sich allein oder: Menge auf eigene
.Ich habe bereits indiziert die: Preis und: Menge Tasten, aber ich auch eine Verbindung Index auf beide zusammen erstellen muß oder ist der einzige Schlüsselindizes genug
Edit: Ich habe diesen Artikel auf der Website mongodb sehr nützlich:
http://www.mongodb.org/display/DOCS/ Indexing + Beratung + und + FAQ
Lösung
Ein Index für price
hilft bei Abfragen auf price
. Ein Index für qty
hilft bei Abfragen auf qty
. Ein Index für price
und qty
hilft bei Abfragen auf price
und Abfragen auf price
und qty
. Also, es ist wie immer zwei Indizes für den Preis von einem. Es wird nicht für Abfragen auf qty
helfen, though.
Sie sollten die Anzahl der Indizes minimieren Sie haben, fallen so eine Ihrer Single-Schlüsselindizes und erstellen Sie eine Verbindung Index mit diesem Schlüssel zu starten.
Als allgemeine Regel gilt, wenn Sie eine Abfrage auf x
, y
tun, und z
, sollten Sie einen Index wie {x:1, y:1, z:1}
haben. Dieser Index wird die folgenden Abfragen machen schnell:
db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})
Es wird nicht diese Abfragen machen schnell:
db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})
Also, stellen Sie sicher, dass Ihre Abfrage hat die Starttaste (n) eines Index in es.
Andere Tipps
Wenn Sie brauchen: Preis für sich allein oder:. Menge auf eigene dann eine Verbindung Index wird nicht funktionieren