在Azure Cosmos DB(SQL API)中,以下查询收费 9356.66 RU's :
SELECT * FROM Core c WHERE c.id = @id -- @id is a GUID
相反,以下更复杂的查询仅收取 6.84 RU :
SELECT TOP 10 * FROM Core c WHERE c.type = "Agent"
两个示例中的文档都很小,具有少量属性。此外,文档集合不使用任何自定义索引策略。该集合包含105685个文档。
对我来说,这听起来好像在“ id”字段上没有正确的工作索引。
这怎么可能?如何解决?
更新:
答案 0 :(得分:0)
如果您具有分区集合,则需要指定分区键,以便最有效地进行请求。在宇宙中,跨分区查询确实非常昂贵(并且速度较慢),因为分区数据可以存储在不同的位置。
尝试以下操作:
SELECT * FROM Core c WHERE c.id = @id AND c.partition = @partition
或者,如果您使用的是CosmosDB SDK,请在Feed选项中指定分区键。
如果有帮助,请告诉我。
答案 1 :(得分:0)
我认为解决方案与此处发布的相同: Azure DocumentDB Query by Id is very slow
一旦能够通过Microsoft支持进行验证,我将关闭自己的问题。