MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Problema di prestazioni di MongoDB:raccolta singola enorme rispetto a raccolte piccole multiple

Separare le raccolte ti dà un indice gratuito senza alcun sovraccarico reale. C'è un sovraccarico per una scansione dell'indice, specialmente se l'indice non ti aiuta davvero a ridurre il numero di risultati che deve scansionare (se hai un milione di risultati nell'indice, ma devi scansionarli tutti e ispezionarli, non ti aiuterà molto).

In breve, separarli è un'ottimizzazione valida, ma dovresti migliorare i tuoi indici per le tue query prima di decidere effettivamente di intraprendere quella strada, che considero una misura drastica (un indice sul prezzo del prodotto potrebbe aiutarti di più in questo caso) .

L'uso di spiegare() può aiutarti a capire come funzionano le query. Alcune nozioni di base sono:Idealmente, desideri un rapporto nscanned/n basso. Non vuoi scanAndOrder =true, e non vuoi BasicCursor, di solito (questo significa che non stai usando affatto un indice).