2017-04-23 96 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 –