单次查询 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,与账户桶里的可用额度无关,提额也改不了
- 一个请求里用别名并行多个高成本查询,成本按别名逐个累加
- 嵌套层级越深,每个叶子字段都要计费,删字段比删连接更有效
处理步骤#
- 先加
extensions { cost { requestedQueryCost } }量出真实成本 - 把内层连接降到
first: 20到 50,只保留业务真正用到的字段 - 单请求控制在 800 点以内,给重试和别名字段留出余量
- 十万条级的全量需求改走
bulkOperationRunQuery,不要拆成上千次小查询 - 把成本写进监控,按
throttleStatus.restoreRate推算下一次可发送的时间
验收标准#
同一业务查询的 cost.actualQueryCost 稳定低于 1000,不再出现 MAX_COST_EXCEEDED,返回字段完整。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。