DocumentDB 是否提供自动索引?

Does DocumentDB provide auto indexing or not?

documentDB 的文档建议它在此处提供自动索引: https://azure.microsoft.com/en-us/documentation/articles/documentdb-indexing/

但它的示例代码(在 Azure 门户上)显示手动索引策略创建,如下所示:

DocumentCollection collectionInfo = new DocumentCollection();
collectionInfo.Id = collectionName;
// Configure collections for maximum query flexibility including string range queries.
collectionInfo.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) {
    Precision = -1
});

如果documentDB提供了自动索引,那为什么还要手动创建索引策略呢?

每个字段都有一个默认的 3 字节散列索引。您可以使用索引策略设置覆盖特定 fields/types 的索引策略。如果你想要范围索引或者你想改变索引的精度,你可以使用策略来实现。您需要在要使用 ORDER BY 以及其他常见用途的任何字段上设置范围索引。所以,是的,这两种说法都是正确的。它提供自动索引,但您也可以指定索引。

是的,DocumentDB 提供模式不可知的自动索引——这意味着每个文档的所有路径都被一致地索引,跨越文档之间的任何类型的模式更改。

请注意,默认策略设置为索引具有完整保真度范围支持的数字,而字符串则使用哈希函数进行索引。选择这些默认值是为了以最小的存储开销提供令人信服的查询性能。

索引策略可供用户覆盖以下情况的默认行为 -

  1. 从索引中选择退出任何特定路径,作为排除路径的一部分。这有助于减少写入路径中产生的 RU 费用,并且根据排除的路径数量,这也可以带来存储收益。

  2. 在选定的包含索引路径上调整索引种类 (hash/range/spatial) 和索引精度(精度越高意味着查询性能越好,存储成本略有增加)。

索引政策的全部细节在这里

https://azure.microsoft.com/en-us/documentation/articles/documentdb-indexing-policies/