sql >> Databáze >  >> NoSQL >> MongoDB

Pomalý rozsah dotazu na víceklíčový index

Svou odpověď jsem našel v této otázce:Pořadí $lt a $gt v dotazu na rozsah MongoDB

Můj index je víceklíčový index (na tags ) a spouštím dotaz na rozsah (v post_time ). Zřejmě , MongoDB nemůže v tomto případě použít obě strany rozsahu jako filtr, takže pouze vybere $gte doložka, která je na prvním místě. Protože můj spodní limit je shodou okolností nejnižší post_time hodnotu, MongoDB začne skenovat všechny objekty.

Bohužel to není celý příběh. Při pokusu o vyřešení problému jsem také vytvořil indexy bez více klíčů, ale MongoDB trval na použití toho špatného. To mě přimělo si myslet, že problém je jinde. Nakonec jsem musel vypustit víceklíčový index a vytvořit jeden bez tags pole. Nyní je vše v pořádku.




  1. Nakonfigurujte stav relace Redis v Azure

  2. Nechci začínat mongoda s `sudo mongod`

  3. Jedinečný index Mongoose na vnořeném dokumentu

  4. Výkon dotazu aktualizace Mongo DB