Azure Cosmos DB 中非常简单的查询的高请求费用 (SQL API)
High request-charge for very simple query in Azure Cosmos DB (SQL API)
在 Azure Cosmos DB (SQL API) 中,以下查询收费 9356.66 RU's:
SELECT * FROM Core c WHERE c.id = @id -- @id is a GUID
相比之下更复杂的查询只收取6.84RU的:
SELECT TOP 10 * FROM Core c WHERE c.type = "Agent"
两个示例中的文档都非常小,具有一些属性。此外,文档集合不使用任何自定义索引策略。该集合包含 105685 个文档。
对我来说,这听起来好像 "id" 字段上没有正常工作的索引。
这怎么可能,如何解决?
更新:
- 如果没有 TOP 关键字,第二个查询将收取 3516.35 RU 和 returns 100000 条记录的费用。
- 分区键为“/partition”,其值为0或1(均匀分布)。
如果你有分区集合,你需要指定分区键,如果你想最有效地做请求。跨分区查询在 cosmos 中非常昂贵(而且更慢),因为分区数据可以存储在不同的地方。
尝试以下操作:
SELECT * FROM Core c WHERE c.id = @id AND c.partition = @partition
或者,如果您使用的是 CosmosDB SDK,请在提要选项中指定分区键。
如果有帮助,请告诉我。
我假设解决方案与此处发布的相同:
一旦我能够通过 Microsoft 支持验证这一点,我将关闭我自己的问题。
在 Azure Cosmos DB (SQL API) 中,以下查询收费 9356.66 RU's:
SELECT * FROM Core c WHERE c.id = @id -- @id is a GUID
相比之下更复杂的查询只收取6.84RU的:
SELECT TOP 10 * FROM Core c WHERE c.type = "Agent"
两个示例中的文档都非常小,具有一些属性。此外,文档集合不使用任何自定义索引策略。该集合包含 105685 个文档。
对我来说,这听起来好像 "id" 字段上没有正常工作的索引。
这怎么可能,如何解决?
更新:
- 如果没有 TOP 关键字,第二个查询将收取 3516.35 RU 和 returns 100000 条记录的费用。
- 分区键为“/partition”,其值为0或1(均匀分布)。
如果你有分区集合,你需要指定分区键,如果你想最有效地做请求。跨分区查询在 cosmos 中非常昂贵(而且更慢),因为分区数据可以存储在不同的地方。
尝试以下操作:
SELECT * FROM Core c WHERE c.id = @id AND c.partition = @partition
或者,如果您使用的是 CosmosDB SDK,请在提要选项中指定分区键。
如果有帮助,请告诉我。
我假设解决方案与此处发布的相同:
一旦我能够通过 Microsoft 支持验证这一点,我将关闭我自己的问题。