Oddzielenie kolekcji daje Ci darmowy indeks bez żadnych dodatkowych kosztów. Skanowanie indeksu wiąże się z dodatkowymi kosztami, zwłaszcza jeśli indeks tak naprawdę nie pomaga zmniejszyć liczby wyników, które musi przeskanować (jeśli w indeksie znajduje się milion wyników, ale musisz je zeskanować i sprawdzić, niewiele ci to pomoże).
Krótko mówiąc, oddzielenie ich jest poprawną optymalizacją, ale powinieneś poprawić indeksy dla swoich zapytań, zanim faktycznie zdecydujesz się obrać tę trasę, co uważam za drastyczny środek (indeks ceny produktu może ci bardziej pomóc w tym przypadku) .
Korzystanie z explain() może pomóc w zrozumieniu działania zapytań. Oto kilka podstawowych informacji:Potrzebny jest niski stosunek nsskanowanych do n, najlepiej. Nie chcesz scanAndOrder =true i zwykle nie chcesz BasicCursor (oznacza to, że w ogóle nie używasz indeksu).