带有分页的查询导致高吞吐量使用



我使用Azure Cosmos DB API作为MongoDB帐户3.6版。在使用skip和limit的查询中,我注意到吞吐量使用率更高。跳跃越高,查询成本就越高。

db.MyCollection.find({Property:"testtest"}).skip(12000).limit(10)

上面的查询花费大约3000 RU。find子句中的属性是我的分区键。我读到目前cosmosdb能够进行带有偏移和限制的查询,但我发现offcaly只有在cosmosdb的SQL API中才有offset limit子句。使用MongoDb API有可能吗?或者我应该使用skip来处理昂贵的查询吗?

SQL API将产生与OFFSET LIMIT相同的结果。当每个查询在所有跳过的文档上循环时,随着偏移量的增加,您会发现RU几乎呈线性增加。

如果可能的话,您应该尝试在您的上下文中使用continuation令牌。您也可以使用索引属性来调整筛选条件,以移动数据。

具有OFFSET LIMIT的查询的RU费用将随着被偏移的术语数量的增加而增加。对于具有多页结果的查询,我们通常建议使用连续标记。延续标记是";书签";用于以后可以恢复查询的位置。如果使用OFFSET LIMIT;书签";。如果要返回查询的下一页,则必须从头开始。

最新更新