El asesor de rendimiento ordena la índices que sugiere por sus respectivos Impact. Impact indica la mejora de rendimiento estimada que aportaría el índice sugerido.
Cómo Performance Advisor sugiere y clasifica los índices
El Asesor de Rendimiento monitorea las consultas que toman más tiempo que 100 Milisegundos de ejecución y agrupa estas consultas en formas de consulta comunes. El Asesor de Rendimiento calcula la ineficiencia de cada forma de consulta considerando las siguientes métricas agregadas de las consultas que coinciden con la forma:
Cantidad de tiempo empleado en ejecutar la consulta.
Número de documentos escaneados.
Número de documentos devueltos.
Tamaño promedio de los objetos.
Para establecer los índices recomendados, el Asesor de Rendimiento utiliza estas métricas en una fórmula para calcular el Impact, o la mejora de rendimiento que causaría la creación de un índice que coincida con esa forma del query. Cuando el Performance Advisor sugiere índices, clasifica los índices según su Impact. El Impact indica High o Medium según el total de bytes desperdiciados leídos.
Orden de campos de índice
El tipo de operación de consulta en la forma de consulta afecta el orden de los campos utilizados para construir el índice. En general, el Asesor de Rendimiento clasifica los campos por su cardinalidad.
La siguiente tabla muestra cómo el Asesor de Rendimiento clasifica varios tipos de operaciones por orden de importancia relativa:
Rank | Tipo de operación | Operador de ejemplo |
|---|---|---|
1 | Partido de igualdad | |
2 | query de arreglo | |
3 | Consulta de rango | |
4 | Consulta de tipo | |
5 | existe | |
6 | Todos los demás operadores | |
7 | Sort |
Limitación de los índices propuestos
El Asesor de rendimiento no sugiere índices que tengan más de 16 campos.
Además, el Asesor de rendimiento sugiere el índice solo si la diferencia entre los documentos escaneados y los documentos devueltos es mayor que 500 para las consultas afectadas.
Index De-Duplication
El Asesor de Rendimiento desduplica los índices superpuestos antes de ofrecer sugerencias. Por ejemplo, considere si el Asesor de Rendimiento calcula los siguientes índices sugeridos potenciales:
{ a : 1 } { a : 1, b : 1 }
Dado que { a : 1 } es un prefijo { a : 1, b : 1 } de, Performance Advisor solo { a : 1, b : 1 } sugiere. Para obtener más información sobre los prefijos de índice, consulte Prefijos.
Ejemplo: Datos de taxis de la ciudad de Nueva York
Este ejemplo utiliza una base de datos llamada cab-db que contiene información sobre viajes en taxi en la ciudad de Nueva York, con campos para las horas de recogida y bajada, la distancia recorrida y un desglose de los costes. Un documento típico de la colección yellow se parece al siguiente ejemplo:
{ "_id" : ObjectId("5db9daab0b2a17b7706cd6a3"), "pickup_datetime" : "2014-06-30 02:09:23", "dropoff_datetime" : "2014-06-30 02:20:36", "passenger_count" : 2, "trip_distance" : 3, "fare_amount" : 12, "tip_amount" : 2.6, "total_amount" : 15.6 }
La colección contiene más de 10 millones de documentos, por lo que una aplicación que necesita ejecutar consultas basadas en datos de campos específicos generará algunas operaciones muy ineficientes a menos que indexe correctamente la colección.
Las consultas típicas de esta aplicación buscan documentos que contengan una hora de entrega específica, combinada con uno o más campos adicionales. Por ejemplo:
db.yellow.find({ "dropoff_datetime": "2014-06-19 21:45:00", "passenger_count": 1, "trip_distance": {"$gt": 3 } })
El Asesor de Rendimiento recomienda los siguientes índices para mejorar el rendimiento:

Nota
De forma predeterminada, el Asesor de Rendimiento muestra recomendaciones de índice para todas las colecciones de su clúster. Para restringir las recomendaciones a una colección específica, seleccione una en el menú desplegable Collection.
El Asesor de rendimiento enumera los índices recomendados en orden de impacto en el rendimiento, de mayor a menor.
La primera recomendación es un índice en tres campos:
passenger_countdropoff_datetimetrip_distance
Haga clic en el botón Create Index para crear el índice con las opciones adicionales que desee. Para obtener más información sobre cómo crear un índice en el Asesor de Rendimiento, consulte Crear índices sugeridos.
Si crea este índice, el motor de base de datos ya no necesita analizar toda la colección para encontrar documentos que coincidan con la consulta, lo que mejora el rendimiento. Las consultas con la forma mostrada en el ejemplo devuelven resultados en 50 milisegundos o menos en la colección indexada, a diferencia de varios segundos en la colección sin indexar.
Nota
También puede crear índices con el Explorador de datos.