为什么按时间戳(字符串)排序的Azure Cosmos查询比_ts(内置)成本高得多?

时间:2017-08-08 08:10:19

标签: azure azure-cosmosdb

此查询的费用为265 RU / s SELECT top 1 * FROM c WHERE c.CollectPackageId = 'd0613cbb-492b-4464-b66b-3634b5571826' ORDER BY c.StartFetchDateTimeUtc DESC

StartFetchDateTimeUtc 是一个字符串属性,使用Cosmos API进行序列化

此查询费用为5 RU / s SELECT top 1 * FROM c WHERE c.CollectPackageId = 'd0613cbb-492b-4464-b66b-3634b5571826' ORDER BY c._ts DESC

_ts 是一个内置字段,一个基于Unix的数字时间戳。

示例结果(仅包含此字段和_ts): "StartFetchDateTimeUtc": "2017-08-08T03:35:04.1654152Z", "_ts": 1502163306

索引已到位并遵循建议&教程如何配置可排序的字符串/时间戳。看起来像: { "path": "/StartFetchDateTimeUtc/?", "indexes": [ { "kind": "Range", "dataType": "String", "precision": -1 } ] }

1 个答案:

答案 0 :(得分:2)

根据此article“项目大小,项目属性计数,数据一致性,索引属性,文档索引,查询模式,脚本用法”变量将影响RU。

所以很不奇怪,不同的房产会花费不同的RU。

我还在我身边创建了一个测试演示(带有索引和相同的文档属性)。我已经向documentdb插入了1000条记录。两个不同的查询成本相同RU。我建议你可以开始新的收藏并再次测试。

结果如下:

按StartFetchDateTimeUtc排序

enter image description here

按_ts排序

enter image description here