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

Expression régulière MongoDB avec champ indexé

La raison de la différence de performances ici est probablement que, avec l'index activé, votre requête doit parcourir l'index (charger en mémoire), puis charger les documents correspondants à renvoyer également en mémoire. Étant donné que vous n'utilisez pas la requête de préfixe, toutes les valeurs de l'index seront analysées et testées par rapport à l'expression régulière. Pas très efficace.

Lorsque vous supprimez l'index, vous effectuez simplement une analyse de table et faites correspondre l'expression régulière - essentiellement, vous avez légèrement simplifié les choses par rapport à la première.

Vous pourrez peut-être rendre la version indexée plus rapide s'il s'agissait d'un requête d'index couverts , il serait également probablement plus rapide s'il s'agissait d'un index composé et que vous deviez le combiner avec les critères d'un autre champ.

Lorsque vous utilisez une requête de préfixe, ce n'est pas qu'elle utilise uniquement un index, mais vous utilisez l'index efficacement, ce qui est essentiel, et vous voyez donc les gains de performances réels.