De volgorde van velden in de index is van belang; de beste samengestelde index voor uw zoek- en sorteervoorbeeld zou eigenlijk zijn:
db.test.ensure_index([("xxx",1),("_id",-1)])
Aangezien uw zoekcriteria in het veld 'xxx' staan, zal het als eerste in de index plaatsen van dit veld meer resultaten opleveren dan zoeken op _id
en vervolgens filteren naar documenten die overeenkomen met uw xxx
criteria.
Als je kijkt naar de n
nummer voor elk plan dat wordt overwogen door de query-optimizer in allPlans
, de BtreeCursor xxx_1
index geeft eigenlijk de meeste resultaten (34). De andere indexen leveren 9, 10 en 16 resultaten op... dus zouden minder efficiënt zijn voor de gegeven zoekcriteria.
Voor meer informatie over indexoptimalisatie is dit artikel zeer nuttig:MongoDB-samengestelde indexen optimaliseren .