Pular para o conteúdo
← Voltar ao overview do Cosmos DB
Killer #8

Composite Index Recommender

Cosmos cobra RU diferente em composite indexes ({fieldA, fieldB}). NoSqlStudio analisa o histórico de queries do Query Cost Inspector, agrupa shapes que tocam 2+ campos sem composite index, projeta ~60% de economia de RU por query, e gera o JSON `compositeIndexes` pronto para colar na indexing policy do Cosmos.

Onde ele fica no app: Tools → Cosmos DB → Composite Index Recommender

O que ele faz

  • Lê o histórico do Query Cost Inspector (todas as queries da sessão).
  • Filtra os shapes que tocam ≥ 2 campos (sem composite atual).
  • Agrupa por (ns, paths) — combinações iguais viram uma única sugestão.
  • Estima 60% de economia de RU por shape (heurística — o Cosmos não publica tabela exata).
  • Gera o JSON `compositeIndexes` no formato Cosmos (máx. 4 paths por composite).
  • Ranqueia as top 20 recomendações por economia.

Passo a passo

  1. 1

    Rode queries reais por alguns minutos

    O Query Cost Inspector precisa de samples. Rode o workload normal ou suba carga sintética.

  2. 2

    Abra o Recommender

    Tools → Cosmos DB → Composite Index Recommender. Ajuste "Min queries to consider" (default 5) para filtrar ruído.

  3. 3

    Veja as recomendações

    Top 20 pela "Est. savings". Cada linha traz: namespace, paths, query count, total de RU, economia, rationale + JSON snippet.

  4. 4

    Valide via WHAT-IF (recomendado)

    Pega o JSON da top recommendation → vai para o WHAT-IF Lab → mutation add-index → confirma savings real antes de aplicar em prod.

  5. 5

    Aplique

    Copie o JSON → Azure portal → Container → Settings → Indexing Policy → adicione no campo compositeIndexes → save.

Casos de uso reais

Pattern Sort + filter

O app tinha `find({tenantId, status}).sort({createdAt: -1})` rodando 50k vezes/dia consumindo 350 RU em média. Composite `{tenantId, status, createdAt}` recomendado. Pós-deploy: 8 RU em média. Economia de R$ 3,8k/mês.

Pronto para ver isso na sua conta Cosmos?Baixar NoSqlStudioPróximo → PITR Browser