Indizes beschleunigen Abfragen in MongoDB dramatisch.
Typen¶
- Single Field
- Compound
- Multikey (Arrays)
- Text
- Geospatial
- TTL (Auto-Delete)
Beispiele¶
db.orders.createIndex({userId:1,status:1,createdAt:-1})
db.sessions.createIndex({expiresAt:1},{expireAfterSeconds:0})
Explain¶
db.orders.find({userId:123}).explain('executionStats')
// COLLSCAN=schlecht, IXSCAN=gut
- ESR: Equality, Sort, Range
- Partielle Indizes
- Covered Queries
- Ungenutzte Indizes prüfen
Indexierungsstrategie¶
Die ESR-Regel (Equality, Sort, Range) bestimmt die optimale Feldreihenfolge in einem Compound Index. Platzieren Sie Equality-Match-Felder zuerst, dann Sort-Felder und schliesslich Range-Bedingungen. So minimieren Sie die Anzahl der untersuchten Index-Schluessel.
Erstellen Sie partielle Indizes fuer Sammlungen, bei denen Sie nur eine Teilmenge der Dokumente abfragen — zum Beispiel {status: "active"}. Das spart Speicherplatz und beschleunigt Schreibvorgaenge. Covered Queries (Abfragen, deren Ergebnis vollstaendig im Index enthalten ist) eliminieren die Notwendigkeit, Dokumente von der Festplatte zu lesen. Ueberpruefen Sie regelmaessig ungenutzte Indizes mit $indexStats, da jeder Index Schreibvorgaenge verlangsamt und Speicherplatz belegt.
Indizes = Leistung¶
Ohne Indizes = Collection Scan. Immer explain() verwenden.