使用 Azure Cosmos DB 并查询一个分区时,我只需在 FeedOptions 中指定分区键即可。 但是当我必须查询 n 个分区时,我有(据我所知)2 个选项:
当我必须对整个结果集(跨所有分区)应用排序标准和分页时,我认为第一种方法将达到其极限。
使用 .NET SQL API 在 Cosmos DB 中跨多个分区进行查询的推荐方法是什么?
不建议使用第一种方法,除非您知道文档具有的每个可能的分区键值并且准备好编写一些并行请求代码。仅当您想查询几个分区而不是全部分区时,它才有效。
如果您想查询所有分区,建议启用
EnableCrossPartitionQuery
,但理想情况下,您希望尽可能少地使用它。
CosmosDB 知道分区键定义是否是查询的一部分,并且如果提供了分区键值,则会将其结果限制为此查询的分区。
这意味着,如果您编写类似
select * from c where c.partitionKey = 'something' || c.partitionKey = 'somethingelse'
的内容并启用 EnableCrossPartitionQuery
选项,则您的查询将仅针对查询中的 2 个分区(something
和 somethingelse
)执行。