コレクションを分離すると、実際のオーバーヘッドなしで無料のインデックスが得られます。インデックススキャンにはオーバーヘッドがあります。特に、インデックスがスキャンする必要のある結果の数を減らすのに実際に役立っていない場合(インデックスに100万件の結果があるが、すべてをスキャンして検査する必要がある場合は、あまり役に立ちません。
要するに、それらを分離することは有効な最適化ですが、実際にそのルートを取ることを決定する前に、クエリに対してインデックスを改善する必要があります。これは、抜本的な対策と考えています(この場合、製品価格のインデックスがより役立つ可能性があります) 。
Explain()を使用すると、クエリがどのように機能するかを理解するのに役立ちます。いくつかの基本事項は次のとおりです。理想的には、nscannedとnの比率を低くする必要があります。通常、scanAndOrder =trueは必要なく、BasicCursorも必要ありません(これは、インデックスをまったく使用していないことを意味します)。