MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wykonanie zapytania Mongodb zajmuje zbyt dużo czasu

Jest wiele rzeczy do zrobienia, aby zoptymalizować zapytanie. Co bym spróbował :

  • Jak powiedział Anthony Winzlet w komentarzach, jako pierwszy należy użyć etapu $match. W ten sposób możesz zmniejszyć liczbę dokumentów przekazywanych do kolejnych etapów i korzystać z indeksów.

  • Zakładając, że używasz co najmniej wersji 3.6 mongo, zmień etapy wyszukiwania za pomocą składni „let/pipeline” (zobacz tutaj ). W ten sposób możesz zintegrować swoje 'filtry zewnętrzne' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) w etapie $match w potoku wyszukiwania. Dzięki indeksom w odpowiednich polach / kolekcjach zyskasz trochę czasu / pamięci na etapach wyszukiwania.

  • Rozpocznij etapy tak późno, jak to możliwe, aby ograniczyć liczbę dokumentów przekazywanych do kolejnych etapów.

Ważne jest, aby zrozumieć, jak działa potok agregacji:każdy etap odbiera dane, wykonuje swoje zadania i przekazuje dane do następnego etapu. Im mniej danych zostanie przekazanych do potoku, tym szybsze będzie Twoje zapytanie.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor $i z $or

  2. Jak agregować i scalać wynik w kolekcję?

  3. php mongodb znajdź n-ty wpis w kolekcji

  4. Wiele warunków granicznych w mongodb

  5. Nie można uwierzytelnić użytkownika w MongoDB 3.0.2 przy użyciu połączenia java