sql >> Database >  >> NoSQL >> MongoDB

MongoDB reguliere expressie met geïndexeerd veld

De reden voor het prestatieverschil hier is waarschijnlijk dat, met de index ingeschakeld, uw query de index moet doorlopen (in het geheugen laden) en vervolgens de overeenkomende documenten laden om ook in het geheugen te worden geretourneerd. Aangezien u de prefix-query niet gebruikt, worden alle waarden in de index gescand en getoetst aan de reguliere expressie. Niet erg efficiënt.

Wanneer u de index verwijdert, doet u gewoon een tabelscan en vergelijkt u de regex daar - in wezen vereenvoudigde u de dingen vanaf de eerste enigszins.

Je zou de geïndexeerde versie misschien sneller kunnen maken als het een gedekte indexquery , zou het waarschijnlijk ook sneller zijn als dit een samengestelde index was en u deze zou moeten combineren met de criteria voor een ander veld.

Wanneer u een prefix-query gebruikt, is het niet zo dat deze dan alleen een index gebruikt, maar u gebruikt de index efficiënt, wat essentieel is, en dus ziet u de echte prestatieverbeteringen.




  1. Couchbase-benchmark onthult zeer trage INSERT's en GET's (met behulp van KeyValue-bewerkingen); langzamer dan aanhoudende MySQL-gegevens

  2. Beste manier om datum/tijd op te slaan in mongodb

  3. Uitzondering voor authenticatie van MongoCredential en Uncategorized Mongo Db Exception

  4. Mongo Copy Collection en gebruikersmachtigingen