Composite Index Recommender
Cosmos 在 composite indexes({fieldA, fieldB})上收取不同的 RU。NoSqlStudio 分析 Query Cost Inspector 的查询历史,将没有 composite index 的触及 2+ 字段的 shapes 分组,预测每个 query 约 60% 的 RU 节省,并生成可粘贴到 Cosmos indexing policy 的 `compositeIndexes` JSON。
它在应用中的位置: Tools → Cosmos DB → Composite Index Recommender
它做什么
- 读取 Query Cost Inspector 的历史(会话的所有 queries)。
- 过滤触及 ≥ 2 个字段的 shapes(无当前 composite)。
- 按(ns、paths)分组 — 相同组合成为一个建议。
- 估计每个 shape 60% 的 RU 节省(启发式 — Cosmos 不公布确切表)。
- 以 Cosmos 格式生成 JSON `compositeIndexes`(每个 composite 最多 4 个 paths)。
- 按节省金额排名 top 20 个推荐。
分步
- 1
运行真实 queries 几分钟
Query Cost Inspector 需要样本。运行正常 workload 或加载合成负载。
- 2
打开 Recommender
Tools → Cosmos DB → Composite Index Recommender。调整 "Min queries to consider"(默认 5)以过滤噪音。
- 3
查看推荐
按 "Est. savings" 排名前 20。每行包括:namespace、paths、query count、总 RU、savings、rationale + JSON 片段。
- 4
通过 WHAT-IF 验证(推荐)
获取顶级推荐的 JSON → 前往 WHAT-IF Lab → add-index mutation → 在应用到生产之前确认真实节省。
- 5
应用
复制 JSON → Azure portal → Container → Settings → Indexing Policy → 添加到 compositeIndexes 字段 → save。
真实用例
Sort + filter 模式
App 中 `find({tenantId, status}).sort({createdAt: -1})` 每天运行 50k 次,平均消耗 350 RU。推荐 composite `{tenantId, status, createdAt}`。部署后:平均 8 RU。每月节省 R$ 3.8k。