Rækkefølgen af felter i indekset har betydning; det bedste sammensatte indeks til dit find- og sorteringseksempel ville faktisk være:
db.test.ensure_index([("xxx",1),("_id",-1)])
Da dine søgekriterier er i feltet 'xxx', vil du finde flere resultater ved at sætte dette felt først i indekset end at søge efter _id
og filtrer derefter til dokumenter, der matcher din xxx
kriterier.
Hvis du ser på n
nummer for hver plan, der vurderes af forespørgselsoptimeringsværktøjet i allPlans
, BtreeCursor xxx_1
indekset giver faktisk flest resultater (34). De andre indekser returnerer 9, 10 og 16 resultater .. så ville være mindre effektive for de givne søgekriterier.
For mere information om indeksoptimering er denne artikel meget nyttig:Optimering af MongoDB Compound Indexes a> .