Att separera samlingarna ger dig ett gratis index utan några egentliga omkostnader. Det finns omkostnader för en indexskanning, särskilt om indexet inte verkligen hjälper dig att minska antalet resultat som det måste skanna (om du har en miljon resultat i indexet, men du måste skanna dem alla och inspektera dem, det kommer inte att hjälpa dig mycket).
Kort sagt, att separera dem är en giltig optimering, men du bör göra dina index bättre för dina frågor innan du faktiskt bestämmer dig för att ta den vägen, vilket jag anser är en drastisk åtgärd (ett index på produktpris kan hjälpa dig mer i det här fallet) .
Att använda explain() kan hjälpa dig att förstå hur frågor fungerar. Några grunder är:Du vill ha ett lågt förhållande nskannad till n, helst. Du vill inte ha scanAndOrder =sant, och du vill vanligtvis inte ha BasicCursor (det betyder att du inte använder ett index alls).