El query planner decide cómo ejecutar una query shape. Analiza filtros, sort, projection, collation y opciones, genera planes candidatos y selecciona un . El resultado puede reutilizarse mediante plan cache hasta que cambios de índices, distribución o eventos internos provoquen nueva planificación.
winning plan
Texto
query shape
→ candidatos
→ periodo de evaluación
→ winning plan
→ ejecución y cache
La forma relevante incluye estructura del filtro, sort, projection, collation y otros atributos. La distribución de valores puede hacer que un plan bueno para un tenant sea peor para otro.
el planner puede evaluar alternativas. El plan ganador no es “el índice con más campos”, sino el que produce trabajo estimado más favorable durante evaluación.
Recorre documentos de la colección. Puede ser correcto en colecciones diminutas o queries que devuelven gran parte de los datos, pero suele ser señal de revisión en hot paths.
Lee documentos después del índice para aplicar filtros residuales o recuperar campos. No es error automático; muchas queries indexadas necesitan FETCH.
Un índice puede soportar sort si el orden de campos y dirección son compatibles con filtros. Si hay un range antes del sort, puede perderse la capacidad de entregar orden global.
Un filtro status: 'active' con 99 % de documentos activos tiene baja selectividad. Añadir un índice no garantiza beneficio. Combínalo con tenant, fecha u otro criterio alineado al workload.
En sharding existen planificación en shards y merge en mongos. Una query scatter-gather puede mostrar planes eficientes por shard pero ser lenta por fan-out y combinación. Revisa targeting además del plan local.
El planner y execution engine evolucionan. Un upgrade puede cambiar planes aun sin modificar queries. Conserva benchmarks y revisa shapes críticas durante pruebas de versión.
El planner optimiza una query shape con la información disponible, pero no conoce toda la intención del negocio. Evalúa el plan por trabajo realizado, estabilidad, distribución de valores y coste de índices. IXSCAN es un medio, no el objetivo.