为什么不总是使用 EnableCrossPartitionQuery

壁标

如果我的 Cosmos DB 有多个分区,是否有任何理由不设置EnableCrossPartitionQuerytrue

我知道如果运行可能会影响多个分区的查询,这是必要的。但是,如果查询使用有效的分区键并且肯定只会命中一个分区,是否会因为我将该标志设置为 true 而导致性能损失或成本增加呢?

龚杰

但是,如果查询使用有效的分区键并且肯定只会命中一个分区,是否会因为我将该标志设置为 true 而导致性能损失或成本增加呢?

据我所知,您需要为分区收集设置分区键,即使您仍然设置EnableCrossPartitionQuery为true,成本也不会改变。因为请求只扫描您已经设置的特定分区。我做了一个样本测试并尝试验证它。

    FeedOptions feedOptions = new FeedOptions();
    PartitionKey partitionKey = new PartitionKey("A");
    feedOptions.setPartitionKey(partitionKey);
    feedOptions.setEnableCrossPartitionQuery(true);

    FeedResponse<Document> queryResults = client.queryDocuments(
            "/dbs/db/colls/part",
            "SELECT * FROM c",
            feedOptions);

    System.out.println("Running SQL query...");
    for (Document document : queryResults.getQueryIterable()) {
        System.out.println(String.format("\tRead %s", document));
    }

    System.out.println(queryResults.getRequestCharge());

在此处输入图片说明

我想也许你不必为这个问题而挣扎。EnableCrossPartitionQuery仅当分区集合的查询不限于单个分区键值时才需要使用选项。如果您知道具体的分区键,则无需设置EnableCrossPartitionQuery

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将FeedOptions.EnableCrossPartitionQuery设置为false是否需要与FeedOptions.PartitionKey结合使用?

为什么不总是使用缓冲流?

为什么不总是使用std :: forward?

为什么不总是使用断言?

为什么asyncio不总是使用执行程序?

为什么不总是使用enctype =“ multipart / form-data”?

为什么不总是使用对象参数列表

为什么不总是使用抽象而不是接口?

为什么不总是使用android:configChanges =“ keyboardHidden | orientation”?

为什么不总是使用fpic(位置独立代码)?

为什么点击事件不总是触发?

为什么不总是缓存委托实例?

为什么不总是发生堆栈溢出?

为什么不总是四泵?

为什么Spring在配置时不总是使用批量插入/更新?

为什么多维数据集不总是使用Three.js进行动画处理

为什么不总是在Java中始终使用ArrayList而不是普通的ol'数组?

为什么不总是使用循环数组双端队列而不是数组列表?

为什么不总是使用map如果它比其他的更快(列表理解,循环(各种变体))?

为什么不总是使用Python的re.findall而不是re.search

为什么我们不总是使用最好的加密技术?

为什么不总是在字符串插值中使用花括号?

具有EnableCrossPartitionQuery的CosmosDB CreateDocumentQuery不会返回结果,但是如果指定PartitionKey则返回结果

为什么 List 总是使用 ArrayList 方法?

linux内存交换:为什么不总是为0?

为什么此代码总是打印“不匹配”?

为什么JavaScript负数不总是为true或false?

为什么数组的内存地址不总是增加?

为什么不总是将psyco用于Python代码?