MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Problème de performances MongoDB :une seule énorme collection contre plusieurs petites collections

Séparer les collections vous donne un index gratuit sans réel surcoût. Il y a une surcharge pour une analyse d'index, surtout si l'index ne vous aide pas vraiment à réduire le nombre de résultats à analyser (si vous avez un million de résultats dans l'index, mais que vous devez tous les analyser et les inspecter, ça ne va pas beaucoup t'aider).

En bref, les séparer est une optimisation valable, mais vous devriez améliorer vos index pour vos requêtes avant de décider d'emprunter cette voie, ce que je considère comme une mesure drastique (un index sur le prix du produit pourrait vous aider davantage dans ce cas) .

L'utilisation d'explique() peut vous aider à comprendre le fonctionnement des requêtes. Voici quelques notions de base :vous voulez idéalement un rapport nscanné à n faible. Vous ne voulez pas de scanAndOrder =true, et vous ne voulez pas de BasicCursor, généralement (cela signifie que vous n'utilisez pas du tout d'index).