El scanAndOrder: true
en la salida de explicación indica que la consulta tiene que recuperar los documentos y luego ordenarlos en la memoria antes de que se devuelva la salida. Esta es una operación costosa y tendrá un impacto en el rendimiento de su consulta.
La existencia de scanAndOrder: true
así como la diferencia en nscanned
un n
en el resultado de explicación indica que la consulta no utiliza un índice óptimo. En este caso, parece que se necesita hacer un escaneo de colección. Es posible que pueda aliviar este problema al incluir las claves de índice en su sort
criterios. De mis pruebas:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
No requiere escanear y ordenar, y devuelve n
y nscanned
del número de registros que está buscando. Esto también significaría ordenar los hashtags
clave, que puede o no ser útil para usted, pero debería aumentar el rendimiento de la consulta.