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

La consulta de prefijo simple de Mongodb con expresiones regulares y la ordenación es lenta

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.