Shopify Admin API

单次查询 requestedQueryCost 超过 1000 被拒

现象#

查询商品并带 variants、metafields、media 时,HTTP 返回 200 但 body 里只有 errors,文案是 Query cost is 2003, which exceeds the single query max cost limit (1000)。

原因#

  • 连接字段的 first 有乘法效应,外层 100 乘内层 100 就是万级成本
  • 单请求成本上限固定为 1000,与账户桶里的可用额度无关,提额也改不了
  • 一个请求里用别名并行多个高成本查询,成本按别名逐个累加
  • 嵌套层级越深,每个叶子字段都要计费,删字段比删连接更有效

处理步骤#

  1. 先加 extensions { cost { requestedQueryCost } } 量出真实成本
  2. 把内层连接降到 first: 20 到 50,只保留业务真正用到的字段
  3. 单请求控制在 800 点以内,给重试和别名字段留出余量
  4. 十万条级的全量需求改走 bulkOperationRunQuery,不要拆成上千次小查询
  5. 把成本写进监控,按 throttleStatus.restoreRate 推算下一次可发送的时间

验收标准#

同一业务查询的 cost.actualQueryCost 稳定低于 1000,不再出现 MAX_COST_EXCEEDED,返回字段完整。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。