sql >> Database >  >> NoSQL >> MongoDB

MongoDB-prestatieprobleem:één grote verzameling versus meerdere kleine verzamelingen

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).




  1. Kan Mongo Export Query niet gebruiken

  2. Catbox-redis geeft een verbroken verbinding weer op mijn hapijs-applicatie

  3. Voeg een nieuw veld toe aan elk document in een MongoDB-verzameling

  4. Mongoes findOneAndUpdate Upsert _id null?