MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb:impacto no desempenho de $HINT


Você pode especificar o índice composto que você criou. Eu não tenho muita reputação, então eu não poderia perguntar isso no comentário. Mas eu tenho uma possível resposta para sua pergunta. Mongo usa uma propriedade chamada "Equality-Sort-Range" que se comporta de uma maneira diferente. Considere a situação abaixo - Você tem poucos documentos com campos {name :string, pin :six digit number, SSN :nine digit number} e você tem dois índices como - {name:1, pin:1, ssn:1} e second index é {name:1, ssn :1, pin :1} agora considere as consultas abaixo:
  1. db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1}) Esta consulta usará o primeiro índice porque temos índice composto em continuação. Nome, pin, ssn estão em continuação.
  2. db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1}) Você esperará que o primeiro índice seja usado nesta consulta. Mas surpreendentemente o índice de segundos será usado por esta consulta porque tem uma operação de intervalo no pino.

A propriedade Equality-sort-range diz que o planejador de consulta usará o índice no campo que serve - "equality-sort-range" melhor. A segunda consulta tem alcance no pino, então o segundo índice será usado enquanto a primeira consulta tem igualdade em todos os campos, então o primeiro índice será usado.