gpt4 book ai didi

c# - 在 SQL 中指定分区键是否等同于使用 FeedOptions.PartitionKey?

转载 作者:行者123 更新时间:2023-11-30 20:26:54 26 4
gpt4 key购买 nike

使用 SQL api,您可以在 SQL 语句中指定分区键,例如SELECT * FROM c WHERE c.MyPartitionKey = 'KeyValue' 或使用 FeedOptions.PartitionKey

它们是等效的还是一种方式具有较低的 RU 成本?

两种方法我都试过了,看不出有什么区别,但是数据集非常小,随着数据的增长,这可能会发生变化。

最佳答案

我做了一些测试。

测试一: 100 个文档

for (int i = 1; i <=100 ; i++) {
Document doc = new Document();
doc.setId(i + "");
if(i%2 == 0)
doc.set("name", "white");
else
doc.set("name", "black");
documentClient.createDocument("dbs/db/colls/part", doc, null, true);
System.out.println("insert document No. " + i);
}

查询 1:

String sql ="SELECT * FROM c where c.name='black'";
FeedOptions options = new FeedOptions();
FeedResponse<Document> queryResults = documentClient.queryDocuments("dbs/db/colls/part",sql,options);
System.out.println(queryResults.getRequestCharge());

结果:17.44 RU


查询 2:

FeedOptions options = new FeedOptions();
PartitionKey partitionKey = new PartitionKey("black");
options.setPartitionKey(partitionKey);
String sql ="SELECT * FROM c";
FeedResponse<Document> queryResults = documentClient.queryDocuments("dbs/db/colls/part",sql,options);
System.out.println(queryResults.getRequestCharge());

结果:17.44 RU

测试二: 1000 个文档

for (int i = 1; i <=1000 ; i++) {
Document doc = new Document();
doc.setId(i + "");
if(i%2 == 0)
doc.set("name", "white");
else
doc.set("name", "black");
documentClient.createDocument("dbs/db/colls/part", doc, null, true);
System.out.println("insert document No. " + i);
}

查询 1 和 2 都是 31.57 RU

如本article所述,RUS与运行文件大小或并发吞吐量有关。上面两个查询结果集没有区别,所以RU cost应该是一样的。

关于c# - 在 SQL 中指定分区键是否等同于使用 FeedOptions.PartitionKey?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com