You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Cosmos DB已定义索引验证及查询性能优化问题

验证Azure Cosmos DB索引定义与使用的方法

一、确认索引策略是否正确定义

你可以通过以下方式检查当前容器的索引策略是否生效:

  • Azure门户操作:进入Cosmos DB账户 -> 目标容器「Parts」-> 「数据资源管理器」-> 容器的「设置」-> 「索引策略」,查看当前的JSON配置是否和你添加的一致。注意你配置里的/*已经包含了所有路径,单独添加/parts/[]/partNumber/?属于重复配置,不会有额外作用,但也不会导致问题。
  • Azure CLI命令:运行以下命令获取容器的索引策略:
    az cosmosdb sql container show --account-name <你的账户名> --resource-group <资源组名> --database-name <数据库名> --name Parts --query "indexingPolicy"
    
    返回的JSON会显示当前生效的索引规则,确认是否包含目标路径。

二、验证查询是否命中索引

这是判断索引是否起作用的核心步骤:

  1. 查看查询执行统计
    在Azure门户的「数据资源管理器」中运行你的查询时,点击查询窗口下方的「显示查询统计信息」,重点关注:

    • Index Hit Ratio:如果值为1.0,说明查询完全命中索引;如果远小于1,说明索引没被有效使用。
    • Total Request Units:对比加索引前后的RU消耗,若没有下降,大概率索引未命中。
    • Query Execution Time:结合RU消耗判断性能变化。
  2. 使用EXPLAIN关键字分析执行计划
    在查询前加上EXPLAIN,比如:

    EXPLAIN SELECT c.partNumber 
    FROM c
    WHERE ARRAY_CONTAINS(c.parts, { 'partNumber': 'ABC12345'}, true)
    

    查看返回的执行计划JSON,找到IndexSpec字段,检查其中的includedPaths是否包含/parts/[]/partNumber/?,同时看QueryPlan里是否有IndexLookup步骤——如果有,说明查询使用了索引;如果是Scan步骤,说明是全表扫描,索引未生效。

三、关于浏览Cosmos DB索引内容

Cosmos DB没有提供直接浏览索引物理内容的工具,因为索引是后台维护的内部结构。你只能通过上述两种方式间接验证:

  • 确认索引策略已正确应用到容器
  • 通过查询执行统计和EXPLAIN计划确认查询是否命中索引

另外补充一点:你的查询使用ARRAY_CONTAINS并指定第三个参数为true(严格匹配),需要确保数组中的partNumber字段类型完全一致(比如都是字符串,没有数字或其他类型),否则即使索引存在,也可能无法命中。

内容的提问来源于stack exchange,提问作者Djdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:42:44