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

Requête de plage lente sur un index multiclé

J'ai trouvé ma réponse dans cette question :Ordre de $lt et $gt dans la requête de plage MongoDB

Mon index est un index multiclé (sur tags ) et j'exécute une requête de plage (sur post_time ). Apparemment , MongoDB ne peut pas utiliser les deux côtés de la plage comme filtre dans ce cas, donc il sélectionne simplement le $gte clause, qui vient en premier. Comme ma limite inférieure se trouve être le plus bas post_time valeur, MongoDB commence à scanner tous les objets.

Malheureusement, ce n'est pas toute l'histoire. En essayant de résoudre le problème, j'ai également créé des index non multi-clés, mais MongoDB a insisté pour utiliser le mauvais. Cela m'a fait penser que le problème était ailleurs. Enfin, j'ai dû supprimer l'index multiclé et en créer un sans les tags champ. Tout va bien maintenant.