Durch die Trennung der Sammlungen erhalten Sie einen kostenlosen Index ohne wirklichen Overhead. Ein Index-Scan ist mit Overhead verbunden, insbesondere wenn der Index Ihnen nicht wirklich dabei hilft, die Anzahl der zu scannenden Ergebnisse zu reduzieren (wenn Sie eine Million Ergebnisse im Index haben, aber alle scannen und überprüfen müssen, es wird dir nicht viel helfen).
Kurz gesagt, die Trennung ist eine gültige Optimierung, aber Sie sollten Ihre Indizes für Ihre Abfragen verbessern, bevor Sie sich tatsächlich für diesen Weg entscheiden, was ich für eine drastische Maßnahme halte (ein Index zum Produktpreis könnte Ihnen in diesem Fall mehr helfen). .
Die Verwendung von EXPLAIN() kann Ihnen helfen zu verstehen, wie Abfragen funktionieren. Einige Grundlagen sind:Sie möchten idealerweise ein niedriges Verhältnis von ngescannt zu n. Sie wollen scanAndOrder =true nicht und BasicCursor normalerweise nicht (das bedeutet, dass Sie überhaupt keinen Index verwenden).