Memisahkan koleksi memberi Anda indeks gratis tanpa biaya tambahan yang nyata. Ada biaya tambahan untuk pemindaian indeks, terutama jika indeks tidak benar-benar membantu Anda mengurangi jumlah hasil yang harus dipindai (jika Anda memiliki sejuta hasil dalam indeks, tetapi Anda harus memindai semuanya dan memeriksanya, itu tidak akan banyak membantu Anda).
Singkatnya, memisahkan mereka adalah pengoptimalan yang valid, tetapi Anda harus membuat indeks Anda lebih baik untuk kueri Anda sebelum Anda benar-benar memutuskan untuk mengambil rute itu, yang saya anggap sebagai ukuran drastis (indeks pada harga produk mungkin lebih membantu Anda dalam kasus ini) .
Menggunakan explain() dapat membantu Anda memahami cara kerja kueri. Beberapa dasarnya adalah:Idealnya Anda menginginkan rasio nscanned to n yang rendah. Anda tidak ingin scanAndOrder =true, dan Anda biasanya tidak menginginkan BasicCursor (ini berarti Anda tidak menggunakan indeks sama sekali).