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
Rode queries reais por alguns minutos
O 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) para filtrar ruído.
- 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
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
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.