CosmosDB中的索引数组

时间:2019-05-13 11:47:25

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我正在尝试为Cosmos DB中的Dogs数组建立索引,但是在Azure门户的索引策略部分中添加索引完全不会改变成本。我读了他们的索引策略,是的,他们说默认情况下所有字段都被索引了,对于列表/复杂对象,里面的字段也被索引了..但是它们是吗?

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*",
            "indexes": [
                {
                    "kind": "Range",
                    "dataType": "Number",
                    "precision": -1
                },
                {
                    "kind": "Range",
                    "dataType": "String",
                    "precision": -1
                },
                {
                    "kind": "Spatial",
                    "dataType": "Point"
                }
            ]
        },
        {
            "path": "/Dogs/[]/?",
            "indexes": [
                {
                    "kind": "Range",
                    "dataType": "String",
                    "precision": -1
                },
                {
                    "kind": "Range",
                    "dataType": "Number",
                    "precision": -1
                }
            ]
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        }
    ]
}

添加第二条路径应特别涵盖我的对象列表,但所做的更改完全不反映查询的成本。

是否可能需要花费一些时间并且索引不会立即反映出来,而是会在几个小时后反映出来?数据库非常胖,条目超过10万。

编辑::似乎创建索引为查询带来了一些改进(将路径添加到排除的路径以检查差异,并且可见)

2 个答案:

答案 0 :(得分:0)

您似乎已经知道,答案是“是的,默认情况下已对它们进行索引,因此您看不到专门为它们编制索引的任何区别。”

通过by,您可以在此处回答自己的问题并接受。您不会获得任何积分,但是我经常这样做,出于几个原因,这是个好主意。首先,它显示了问题的答案,其次,它使答案更清晰,并使您的问题成为遇到相同问题的其他所有人的资源。随意忽略这个答案,自己做。

答案 1 :(得分:0)

似乎已创建索引并为查询带来了一些改进(将路径添加到排除的路径以检查差异,并且可见),因此我认为默认情况下确实对列表进行了索引。