【发布时间】:2015-09-23 06:51:03
【问题描述】:
假设我们的文档中有一个非唯一的 GUID/UUID 值:
[
{
"id": "123456",
"Key": "117dfd49-a71d-413b-a9b1-841e88db06e8"
"Name": "Kaapstad",
},
...
]
我们只想通过相等来查询这个。无需查询范围或排序。例如:
SELECT * FROM c where c.Key = "117dfd49-a71d-413b-a9b1-841e88db06e8"
以下是索引定义。它是一个哈希索引(因为不会执行范围查询),使用 String 数据类型(因为 Javascript 本身不支持 Guid)
collection.IndexingPolicy.IncludedPaths.Add(
new IncludedPath {
Path = "/Key/?",
Indexes = new Collection<Index> {
new HashIndex(DataType.String) { Precision = -1 }
}
});
但是,最佳的索引精度是多少?
This MSDN page 并没有让我清楚什么精度值最适合这样的值:
索引精度配置对字符串范围更有用。自从 字符串可以是任意长度,索引精度的选择 会影响字符串范围查询的性能,并影响 所需的索引存储空间量。字符串范围索引可以是 配置为 1-100 或 -1(“最大值”)。如果你想表演 Order By 对字符串属性的查询,那么您必须指定一个 对应路径的精度为 -1。
【问题讨论】:
标签: azure azure-cosmosdb