我在cosmos db中调用“ queryDocuments(String collectionLink,String query,FeedOptions options)” api,以使用分区键进行一些SQL查询。我想知道应该在哪里指示分区键,查询字符串或feedoptions?
在性能方面,我想知道是否应该在feedoptions options参数中指示分区键
喜欢差异
queryDocuments(collectionLink,“ SELECT * FROM root WHERE id = xxx AND partitionkey = XXX”,空);
要么
feedoptions.setpartitionkey(PK);
queryDocuments(collectionLink,“ SELECT * FROM root WHERE id = xxx”,feedoptions);
感谢您的回答!
最佳答案
我建议您在FeedOptions中指定分区键。我做了一个微测试,以观察这两种解决方案的性能。
第一:
String name = "A";
FeedResponse<Document> feedResponse = client
.queryDocuments("dbs/db/colls/part",
"SELECT * FROM c WHERE c.name ='" + name + "'", null);
System.out.println(feedResponse.getRequestCharge());
第二个:
FeedOptions queryOptions = new FeedOptions();
PartitionKey partitionKey = new PartitionKey("/A");
queryOptions.setPartitionKey(partitionKey);
FeedResponse<Document> feedResponse1 = client
.queryDocuments("dbs/db/colls/part",
"SELECT * FROM c ", queryOptions);
System.out.println(feedResponse1.getRequestCharge());
测试数据:
输出:
测试表明第二个消耗的RU低于第一个消耗的RU,我的样本数据太小,我认为它们之间的差距会随着数据的增加而增加。