sql >> Database >  >> NoSQL >> MongoDB

MongoDB, prestatie van query door reguliere expressie op geïndexeerde velden

Eigenlijk volgens de documentatie,

Als er een index voor het veld bestaat, vergelijkt MongoDB de reguliere expressie met de waarden in de index, wat sneller kan zijn dan een verzamelingsscan. Verdere optimalisatie kan plaatsvinden als de reguliere expressie een "prefixexpressie" is, wat betekent dat alle potentiële overeenkomsten met dezelfde tekenreeks beginnen. Hierdoor kan MongoDB een "bereik" maken van dat voorvoegsel en alleen overeenkomen met die waarden uit de index die binnen dat bereik vallen.

http://docs.mongodb.org/manual/reference/operator/query/regex/#index-use

Met andere woorden:

Voor /Jon Skeet/ regex, mongo scant de sleutels in de index volledig en haalt vervolgens de overeenkomende documenten op, wat sneller kan zijn dan het scannen van de collectie.

Voor /^Jon Skeet/ regex, mongo scant alleen het bereik dat begint met de regex in de index, wat sneller zal zijn.



  1. Kan ik twee kolommen uniek voor elkaar maken? of samengestelde primaire sleutels in redis gebruiken?

  2. Hoe een trigger voor redis datastore te implementeren?

  3. Leidt elke aanroep binnen een multi()-aanroep in phpredis tot een nieuwe netwerkrondreis naar redis?

  4. Python-woordenboek:u'-tekens verwijderen