MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB, performance de requête par expression régulière sur des champs indexés

En fait, d'après la documentation,

Si un index existe pour le champ, MongoDB fait correspondre l'expression régulière aux valeurs de l'index, ce qui peut être plus rapide qu'une analyse de collection. Une optimisation supplémentaire peut se produire si l'expression régulière est une « expression de préfixe », ce qui signifie que toutes les correspondances potentielles commencent par la même chaîne. Cela permet à MongoDB de construire une "plage" à partir de ce préfixe et de ne faire correspondre que les valeurs de l'index qui se situent dans cette plage.

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

En d'autres termes :

Pour /Jon Skeet/ regex, mongo analysera complètement les clés de l'index, puis récupérera les documents correspondants, ce qui peut être plus rapide que l'analyse de la collection.

Pour /^Jon Skeet/ regex ,mongo analysera uniquement la plage commençant par la regex dans l'index, ce qui sera plus rapide.