2017-04-23 98 views
1

我创建一个收集与分区键为“/ countryId”,在当我读取使用SQL查询我指定FeedOptions {EnableCrossPartitionQuery =真}和查询等如下DocumentDB使用EnableCrossPartitionQuery在特定集合上搜索设置True?

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

多个文档我想知道如何内部执行,我的意思是

我指定的countryId(partitionKey)在哪里条件,它会去那个特定的分区只为开发g文件?

它会去集合中的所有分区,并检查每个文件countryId(partitionkey

先谢谢了!!

回答

3

的DocumentDB查询将执行对只匹配滤波器,并不是所有的分区,该分区:

  1. 的DocumentDB SDK /网关将恢复分区键的元数据收集和知道,分区键是countryId ,以及物理分区,以及分区键哈希映射到哪些物理分区的范围。
  2. 在查询执行过程中,SDK /网关将解析SQL查询并检测是否存在针对分区键的过滤器。它将散列值,根据其拥有的分区键范围查找匹配的分区。例如,国家1,2和3可能全部位于一个物理分区中,或者全部位于三个不同的分区中。
  3. 根据配置的并行度,查询将由SDK /网关以串行或并行方式执行。如果需要像ORDER BY或聚合这样的后处理,那么它将由SDK /网关执行。
+1

谢谢你Aravind –