【发布时间】:2018-06-10 18:05:26
【问题描述】:
我有一个包含日期字段的集合,该字段由 C# 应用程序使用 DateTime 对象填充。该字段被序列化为以下格式“2018-06-10T17:32:48.3285735Z”。
我没有触及集合中的索引策略,所以字符串使用的是 Range 索引类型。根据我在文档中阅读的内容,这是索引日期的最有效方法,但是,当我在 ORDER BY 子句中使用 Date 字段时,查询消耗的 RU 至少比使用时间戳查询多 10 倍(_ts) 数字字段。这意味着为这个单一收藏支付 10 倍以上的费用。
为了说明问题:
SELECT TOP 100 * FROM c ORDER BY c.Date DESC
//query consumes a minimum of 500 RUs
SELECT TOP 100 * FROM c ORDER BY c._ts DESC
//query consumes 50 RUs
这是它应该如何工作还是我错过了什么?我怀疑如果这是预期的行为,它将在索引文档中得到强调,并将日期存储为数字将被突出显示为最佳实践。
编辑: 这是集合的索引策略(我从未更改过)。
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Range",
"dataType": "String",
"precision": -1
},
{
"kind": "Spatial",
"dataType": "Point"
}
]
}
],
"excludedPaths": []
}
【问题讨论】:
-
嗨,您找到问题所在了吗?如何解决?谢谢
标签: azure azure-cosmosdb