sql >> Databáze >  >> NoSQL >> MongoDB

Problém s výkonem MongoDB:Jedna obrovská kolekce vs. několik malých sbírek

Oddělením kolekcí získáte bezplatný index bez jakékoli skutečné režie. Skenování indexu vyžaduje režii, zvláště pokud vám index skutečně nepomáhá snížit počet výsledků, které musí skenovat (pokud máte v indexu milion výsledků, ale musíte je všechny skenovat a prohlížet, moc vám to nepomůže).

Stručně řečeno, jejich oddělení je platnou optimalizací, ale měli byste své indexy zlepšit pro vaše dotazy, než se skutečně rozhodnete jít touto cestou, což považuji za drastické opatření (více by vám v tomto případě mohl pomoci index ceny produktu). .

Použití vysvětlení() vám může pomoci pochopit, jak fungují dotazy. Některé základy jsou:V ideálním případě chcete nízký poměr skenování k n. Nechcete scanAndOrder =true a obvykle nechcete BasicCursor (to znamená, že vůbec nepoužíváte index).




  1. Sdílení soketů přes samostatné instance nodeJS

  2. Odebrat objekt z vnořeného pole podle více kritérií

  3. BsonSerializationException nastane, pokud název prvku končí tečkou

  4. Agregace MongoDB pro přidání chybějících měsíců mezi dvě data po seskupení v poli data