sql >> Database >  >> NoSQL >> MongoDB

Eenvoudige MongoDB-query erg traag, hoewel index is ingesteld

Je hebt geen index die Mongo daar automatisch voor gebruikt, dus het voert een volledige tabelscan uit.

Zoals vermeld in de documenten

Waarom

Als je een index hebt op a,b - en je zoekt op a alleen - er wordt automatisch een index gebruikt. Dit komt omdat het het begin van de index is (wat snel te doen is), de db kan de rest van de indexwaarde gewoon negeren.

Een index op a,b is inefficiënt bij het zoeken op b alleen omdat het niet de mogelijkheid biedt om de index te gebruiken om te zoeken met "starts with thisfixedstring".

Dus ofwel:

  • Voeg _reference_1_id toe aan de zoekopdracht (waarschijnlijk niet relevant)
  • OF voeg een index toe aan _reference_2_id (als u vaak in het veld zoekt)
  • OF gebruik een hint

Hint

Waarschijnlijk uw goedkoopste optie op dit moment.

Voeg een vraaghint toe om af te dwingen uw _reference_1_id_1__reference_2_id_1_id_1 inhoudsopgave. Dat is waarschijnlijk een stuk sneller dan een volledige tabelscan, maar nog steeds een stuk langzamer dan een index die begint met het veld dat u in de query gebruikt.

d.w.z.

db.mycoll
    .find({"_reference_2_id" : ObjectId("jkl7890123456")})
    .hint("_reference_1_id_1__reference_2_id_1_id_1");


  1. Hoe exporteer ik alle collecties in MongoDB?

  2. Herhaal grote verzamelingen in MongoDB via spring-data

  3. Hoe krijg je een meervoudig resultaat in mangoest en combineer je het in één enkele reactie?

  4. MongoDB:Verkeerde geo-query met $geoIntersect op een polygoon