O Performance Advisor ordena os índices que sugere por seu Impact respectivo. Impact indica a melhoria de desempenho estimada que o índice sugerido traria.
Como o Performance Advisor sugere e classifica índices
O Performance Advisor monitora as queries que levam mais de 100 milissegundos para serem executadas e agrupa essas queries em formas de query comuns. O Performance Advisor calcula a ineficiência de cada forma de query considerando as seguintes métricas agregadas de queries que correspondem à forma:
Quantidade de tempo gasto executando a query.
Número de documentos digitalizados.
Número de documentos devolvidos.
Tamanho Médio do Objeto.
Para estabelecer índices recomendados, o Performance Advisor usa essas métricas em uma fórmula para calcular o Impact ou a melhoria de desempenho que a criação de um índice correspondente a essa forma de query causaria. Quando o Performance Advisor sugere índices, ele classifica os índices por seu Impact. O Impact é determinado pelo total de bytes desperdiçados lidos.
Ordem dos campos do índice
O tipo de operação de query na forma de query afeta a ordem dos campos utilizados para construir o índice. A tabela a seguir mostra como o Performance Advisor classifica vários tipos de operação por ordem de importância relativa:
Limitando índices sugeridos
O Performance Advisor não sugere índices que tenham mais de 16 campos.
Além disso, o Performance Advisor sugere o índice somente se a diferença entre documentos digitalizados e documentos retornados for maior que 500 para queries impactadas.
Eliminação de duplicação de índices
O Performance Advisor elimina as duplicações dos índices sobrepostos antes de fazer sugestões. Por exemplo, considere que o Performance Advisor calcula os seguintes índices sugeridos:
{ a : 1 } { a : 1, b : 1 }
Como { a : 1 } é um prefixo de { a : 1, b : 1 }, o Performance Advisor sugere apenas { a : 1, b : 1 }. Para saber mais sobre prefixos de índice, consulte Prefixos.
Exemplo: dados de trânsito da cidade de Nova York
Este exemplo usa um banco de dados chamado cab-db que contém informações sobre as corridas de réplica da cidade de Nova York, com campos para os horários de coleta e entrega, distância da corrida e um detalhamento dos custos da corrida. Um documento típico na collection yellow se parece com o exemplo a seguir:
{ "_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 }
A collection contém mais de 10 milhões de documentos, portanto, um aplicativo que precisa executar queries com base em dados de campos específicos gerará algumas operações muito ineficientes, a menos que você indexe corretamente a collection.
Queries típicas para este aplicativo Atlas Search de documentos que contenham um tempo de entrega específico, combinado com um ou mais campos. Por exemplo:
db.yellow.find({ "dropoff_datetime": "2014-06-19 21:45:00", "passenger_count": 1, "trip_distance": {"$gt": 3 } })
O Performance Advisor recomenda os seguintes índices para melhorar o desempenho:

Observação
Por padrão, o Performance Advisor mostra recomendações de índice para todas as collections em seu cluster. Para restringir as recomendações a uma coleção específica, selecione uma no menu suspenso Collection .
O Performance Advisor lista os índices recomendados em ordem de impacto no desempenho, do maior para o menor.
A primeira recomendações é para um índice em três campos:
passenger_countdropoff_datetimetrip_distance
Clique no botão Create Index para criar o índice com quaisquer opções adicionais desejadas. Para saber mais sobre como criar um índice no Performance Advisor, consulte Criar índices sugeridos.
Se você criar esse índice, removerá a necessidade de o mecanismo de banco de dados verificar toda a coleção para encontrar documentos que correspondam à query, o que melhora o desempenho. Queries com a forma mostrada nos resultados de retorno de exemplo em 50 milissegundos ou menos na coleção indexada, em vez de vários segundos na coleção não indexada.
Observação
Você também pode criar índices com o chave de criptografia de dados (DEK).