sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb:impacto en el rendimiento de $HINT

¿Puede especificar el índice compuesto que ha creado? No tengo mucha reputación, así que no podría preguntar esto en un comentario. Pero tengo una posible respuesta a su pregunta. Mongo usa una propiedad llamada "Equality-Sort-Range" que se comporta de manera diferente. Considere la siguiente situación:tiene pocos documentos con campos {nombre:cadena, pin:número de seis dígitos, SSN:número de nueve dígitos} y tiene dos índices como - {nombre:1, pin:1, ssn:1} y segundo índice es {name:1, ssn:1, pin:1} ahora considere las siguientes consultas:

  1. db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1}) Esta consulta usará el primer índice porque tenemos un índice compuesto a continuación. Nombre, pin, ssn están en continuación.
  2. db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1}) Esperará que se utilice el primer índice en esta consulta. Pero, sorprendentemente, esta consulta utilizará el índice de segundos porque tiene una operación de rango en pin.

La propiedad Equality-sort-range dice que el planificador de consultas usará el índice en el campo que sirve - "igualdad-sort-range" mejor. La segunda consulta tiene un rango en el pin, por lo que se usará el segundo índice, mientras que la primera consulta tiene igualdad en todos los campos, por lo que se usará el primer índice.