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
Rode queries reais por alguns minutos
Query Cost Inspector precisa de samples. Rode o workload normal ou suba carga sintética.
- 2
Abra o Recommender
Tools → Cosmos DB → Composite Index Recommender. Ajuste "Min queries to consider" (default 5) pra filtrar ruído.
- 3
Veja as recomendações
Top 20 pelo "Est. savings". Cada linha tem: namespace, paths, query count, total RU, savings, rationale + JSON snippet.
- 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
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.