Door de collecties te scheiden, krijgt u een gratis index zonder echte overhead. Er zijn overheadkosten voor een indexscan, vooral als de index u niet echt helpt om het aantal te scannen resultaten te verminderen (als u een miljoen resultaten in de index heeft, maar u moet ze allemaal scannen en inspecteren, het zal je niet veel helpen).
Kortom, het scheiden ervan is een geldige optimalisatie, maar u moet uw indexen beter maken voor uw zoekopdrachten voordat u daadwerkelijk besluit die route te nemen, wat ik als een drastische maatregel beschouw (een index op de productprijs kan u in dit geval meer helpen) .
Het gebruik van explain() kan u helpen begrijpen hoe query's werken. Enkele basisprincipes zijn:Idealiter wilt u een lage nscanned to n-ratio. U wilt geen scanAndOrder =true, en u wilt meestal geen BasicCursor (dit betekent dat u helemaal geen index gebruikt).