MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB, Leistung der Abfrage durch regulären Ausdruck in indizierten Feldern

Eigentlich laut Dokumentation,

Wenn für das Feld ein Index vorhanden ist, gleicht MongoDB den regulären Ausdruck mit den Werten im Index ab, was schneller sein kann als ein Sammlungsscan. Eine weitere Optimierung kann erfolgen, wenn der reguläre Ausdruck ein „Präfixausdruck“ ist, was bedeutet, dass alle potenziellen Übereinstimmungen mit derselben Zeichenfolge beginnen. Dadurch kann MongoDB einen „Bereich“ aus diesem Präfix erstellen und nur mit den Werten aus dem Index abgleichen, die in diesen Bereich fallen.

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

Mit anderen Worten:

Für /Jon Skeet/ regex ,mongo scannt die Schlüssel im Index vollständig und ruft dann die übereinstimmenden Dokumente ab, was schneller sein kann als der Sammlungsscan.

Für /^Jon Skeet/ regex ,mongo scannt nur den Bereich, der mit der Regex im Index beginnt, was schneller ist.