DocumentDB使用EnableCrossPartitionQuery设置True搜索特定集合?

时间:2017-04-23 18:34:11

标签: azure azure-cosmosdb nosql

我创建了一个分区键为&#34; / countryId&#34; 的集合,因为当我使用SQL查询读取多个文档时,我指定 FeedOptions {EnableCrossPartitionQuery = true} < / strong>和查询如下

select * from collection c where (c.countryId=1 or c.countryId=2 or c.countryId=3)

我想知道内部执行的方式,我的意思是

我在where where条件中指定了countryId( partitionKey ),是否只为了获取文档而转到特定分区?

它将转到收集的所有分区并检查每个文档countryId( partitionkey

先谢谢!!。

1 个答案:

答案 0 :(得分:3)

DocumentDB查询将仅针对与过滤器匹配的分区执行,而不是所有分区:

  1. DocumentDB SDK / gateway将检索集合的分区键元数据,并知道分区键是countryId,以及物理分区,以及分区键哈希的范围映射到哪些物理分区。
  2. 在查询执行期间,SDK /网关将解析SQL查询并检测是否存在针对分区键的过滤器。它将散列值,根据其拥有的分区键范围找到匹配的分区。例如,国家1,2和3可以全部在一个物理分区中,或者三个不同的分区中。
  3. 查询将由SDK /网关根据配置的并行度进行串行或并行执行。如果需要任何后处理(如ORDER BY或聚合),则它将由SDK /网关执行。