2017-10-11 19 views
0

クエリフィルタが明示的にパーティションをORではなくIList Containsメソッドを使用する場合、Azure DocumentDBはパーティション間でクエリを並列化できますか?IList.Contains(パーティション)を使用して複数のパーティションを持つDocumentDbクエリ

など。

DocumentClient client = ... 
Uri documentUri = ... 
FeedOptions = new FeedOptions { EnableCrossPartitionQuery = true }; 

IList<string> partitions = new List<string> { "x", "y", "z" }; 
Expression<Func<ResourceType, bool>> filter = 
    (ResourceType rt) => partitions.Contains(rt.PartitionId); 

IDocumentQuery<ResourceType> queryable = 
    client.CreateDocumentQuery<ResourceType>(documentUri, feedOptions) 
      .Where(filter) 
      .AsDocumentQuery(); 
FeedResponse<ResourceType> response = await queryable.ExecuteNextAsync<ResourceType>(); 
+0

[パラレルクエリの実行](https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-documentdb-dotnet#parallel-query-execution)を参照してください。 [MaxDegreeOfParallelism](https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.documents.client.feedoptions.maxdegreeofparallelism,redirectedfrom=MSDN&view=azure-dotnet#overloads)プロパティ。 –

+0

ありがとうございます。私の質問は、MaxDegreeOfParallelismが正しく設定されていると仮定して、SDKの.Containsを並列クエリに変換する能力を参照することを意味します。 – Trey

答えて

0

はい、(SQL INに翻訳された)クエリが一致するパーティションに並列化/バッチ処理されますが含まれています。 @ fred-hanのように、FeedOptions.MaxDegreeOfParallelismと設定してください。

関連する問題