Skip to content
← Back to Cosmos DB overview
Killer #8

Composite Index Recommender

cosmosSite.killerPages.composite-index.intro

Where it lives in the app: Tools → Cosmos DB → Composite Index Recommender

What it does

  • Lê history do Query Cost Inspector (todas as queries da sessão).
  • Filtra shapes que tocam ≥ 2 campos (sem composite atual).
  • Agrupa por (ns, paths) — mesmas combinações viram uma sugestão.
  • Estima 60% RU savings por shape (heurística — Cosmos não publica tabela exata).
  • Gera JSON `compositeIndexes` no formato Cosmos (max 4 paths/composite).
  • Ranqueia top 20 recommendations por savings.

Step-by-step

  1. 1

    Rode queries reais por alguns minutos

    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) pra filtrar ruído.

  3. 3

    Veja as recomendações

    Top 20 pelo "Est. savings". Cada linha tem: namespace, paths, query count, total RU, savings, rationale + JSON snippet.

  4. 4

    Valide via WHAT-IF (recomendado)

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

  5. 5

    Aplique

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

Real use cases

Sort + filter pattern

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

Ready to see it on your Cosmos account?Download NoSqlStudioNext → PITR Browser