默认情况下,Cosmos DB索引的范围是吗?

时间:2020-03-02 17:13:27

标签: azure-cosmosdb

我有一个大约4gb的cosmos db,当它很小时,它可以以较低的RU值(3-15ish)相对较快地执行日期过滤,但是随着DB包含数百万条记录的发展,它现在已经变慢了RU值增加了数千。

查看日期https://docs.microsoft.com/en-us/azure/cosmos-db/working-with-dates的文档说

要有效执行这些查询,您必须配置您的 字符串范围索引的集合

但是,阅读链接索引策略文档(https://docs.microsoft.com/en-us/azure/cosmos-db/index-policy)听起来好像默认情况下每个字段都创建了一个范围索引

新创建的容器的默认索引策略对每个项目的每个属性进行索引,对任何字符串或数字强制执行范围索引,对Point类型的任何GeoJSON对象强制执行空间索引

是否需要将索引配置为默认值以外的其他值?

{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
    {
        "path": "/*"
    }
],
"excludedPaths": [
    {
        "path": "/\"_etag\"/?"
    }
]

}

2 个答案:

答案 0 :(得分:1)

关于索引编制,您可以从here

中查看最佳做法。

您应该从索引中排除未使用的路径,以加快写入速度。 您应该将IndexedPolicy与IncludedPaths和ExcludedPaths一起使用

例如:

var collection = new DocumentCollection { id = "excludedPathCollection"};
collection.IndexingPolicy.IncludedPaths.Add(new IncludedPath { Path = "/*" });
collection.IndexingPolicy.ExcludedPaths.Add(new ExcludedPath { Path = "/nonIndexedContent/*");

答案 1 :(得分:0)

因此,如果您担心查询成本编制索引并不会真正有帮助。写入成本取决于索引,而不取决于读取。如果您看到每个请求有成千上万个RU,我怀疑您是在使用跨分区查询,还是根本没有分区(或所有内容都只有一个分区)。为了降低这些成本,您需要停止使用跨分区查询,或者(如果无法使用跨分区查询)以无需使用跨分区查询的方式重新整理数据。

我认为范围是cosmos db中的默认索引<​​/ p>