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

Mongodb :impact sur les performances de $HINT

Pouvez-vous s'il vous plaît spécifier l'index composé que vous avez créé. Je n'ai pas beaucoup de réputation, donc je ne pourrais pas demander cela en commentaire. Mais j'ai une réponse possible à votre question. Mongo utilise une propriété appelée "Equality-Sort-Range" qui se comporte d'une manière différente. Considérez la situation ci-dessous :vous avez quelques documents avec des champs {nom :chaîne, broche :nombre à six chiffres, SSN :nombre à neuf chiffres} et vous avez deux index comme - {nom :1, broche :1, ssn :1} et le deuxième index est {name : 1, ssn :1, pin :1}, examinez maintenant les requêtes ci-dessous :

  1. db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1}) Cette requête utilisera le premier index car nous avons un index composé en continuation. Nom, pin, ssn sont en continuation.
  2. db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1}) Vous vous attendez à ce que le premier index soit utilisé dans cette requête. Mais étonnamment, l'index des secondes sera utilisé par cette requête car il a une opération de plage sur la broche.

La propriété Equality-sort-range indique que le planificateur de requêtes utilisera mieux l'index sur le champ qui sert - "equality-sort-range". La deuxième requête a une plage sur la broche, donc le deuxième index sera utilisé tandis que la première requête a une égalité sur tous les champs, donc le premier index sera utilisé.