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

Cómo elige MongoDB los planes candidatos

Si una consulta puede ser satisfecha por múltiples índices definidos en la colección, MongoDB probará todos los índices aplicables en paralelo. El planificador de consultas seleccionará el primer índice que pueda devolver 101 resultados. Hay otras facetas de la selección de índices, pero en general esto es cierto según Optimización de consultas documentación.

Este método de selección de índice puede seleccionar un índice subóptimo. Esto se debe a que, desde el punto de vista de MongoDB, tiene varios índices que describen lo mismo. Para mitigar la selección de índice subóptima que observó, puede hacer lo siguiente:

  1. Elimine todos los demás índices que descubra que no son óptimos.

    Esto es para garantizar que el planificador de consultas no tenga otra opción que elegir los índices que usted adaptó para su consulta.

  2. Utilice la hint() método

    hint() le permite decirle explícitamente a MongoDB que use el índice prescrito para la consulta. Por ejemplo:

    db.tasks.find(...).hint({project: 1, created_by: 1})
    

    Consulte https://docs.mongodb.com/v2. 6/referencia/operador/meta/pista/ para obtener más información sobre hint() .

Otro matiz en su consulta es que incluye un $or operador. En este caso, cada término del $or la expresión debe tener un índice asociado , de lo contrario MongoDB realizará un escaneo de colección (BasicCursor en términos de MongoDB 2.6). Esto se explica con más detalles en https://docs .mongodb.com/v2.6/reference/operator/query/or/#behaviors