假设我的容器中有以下数据:
{
"id": "1DBF704E-1623-4844-DC86-EFA729A5C048",
"firstName": "Wylie",
"lastName": "Ramsey",
"country": "AZ",
"city": "Tucson"
}
当我查询特定分区键时,我使用字段“id”作为项目 id,字段“country”作为分区键:
SELECT * FROM c WHERE c.country = "AZ"
(获取“AZ”中的所有人员)
我应该添加“国家/地区”作为索引,还是默认获得它,因为我声明“国家/地区”作为分区键? 使用 SDK 时有区别吗(意思是:添加
new PartitionKey("AZ")
选项,然后如上所述发送查询)?
我创建了一个包含 50,000 条记录的集合,并禁用了所有属性的索引。
索引政策:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [], // Included nothing
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/*" // Exclude all paths
}
]
}
按id查询成本2.85 RU。 按 PartitionKey 查询成本580 RU。
添加了带有 PartitionKey(国家)的索引策略:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/country/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/*" // Exclude all paths
}
]
}
在 PartitionKey 上添加索引使其减少到 2.83 RUs。
所以答案是肯定的,如果您禁用了默认索引策略并且需要按分区键搜索,那么您应该为其添加索引。