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

为什么Azure Cosmos查询按时间戳(字符串)排序的成本比按(内置)排序的成本高很多?,azure,azure-cosmosdb,Azure,Azure Cosmosdb,此查询花费265 RU/s: 从c中选择top 1* 其中c.CollectPackageId='d0613cbb-492b-4464-b66b-3634b5571826' 按c.StartFetchDateTimeUtc描述订购 StartFetchDateTimeUtc是一个字符串属性,使用Cosmos API序列化 此查询花费5 RU/s: 从c中选择top 1* 其中c.CollectPackageId='d0613cbb-492b-4464-b66b-3634b5571826'

此查询花费265 RU/s

从c中选择top 1*
其中c.CollectPackageId='d0613cbb-492b-4464-b66b-3634b5571826'
按c.StartFetchDateTimeUtc描述订购

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

此查询花费5 RU/s

从c中选择top 1*
其中c.CollectPackageId='d0613cbb-492b-4464-b66b-3634b5571826'
c.U.ts DESC订购

\u ts是一个内置字段,是一个基于Unix的数字时间戳

示例结果(仅包括此字段和):

“StartFetchDateTimeUtc”:“2017-08-08T03:35:04.1654152Z”,
“_ts”:1502163306

索引已就位,并遵循如何配置可排序字符串/时间戳的建议和教程。它看起来像:

{
“路径”:“/StartFetchDateTimeUtc/?”,
“索引”:[
{
“种类”:“范围”,
“数据类型”:“字符串”,
“精度”:-1
}
]
}

根据这一点,项目大小、项目属性计数、数据一致性、索引属性、文档索引、查询模式、脚本使用等变量将影响RU

所以很奇怪,不同的房产价格不同

我还创建了一个测试演示(使用索引和相同的文档属性)。我已经在documentdb中插入了1000条记录。两个不同的查询成本相同。我建议你可以开始一个新的收集和测试

结果如下:

按StartFetchDateTimeUtc订购

订购人


这太奇怪了。我们无法启动新集合,因为这是生产数据。发生的情况是:*该集合在填充时没有使用UtcTimeStamp属性,包含10000个文档*之后,添加了属性以及索引。*然后,你可以看到这个问题。顺便说一下,非常感谢您的详细回复!我欠你一大笔钱。由于这种巨大的怪异,我们即将向微软开出一张支持票。它对我们消费数据库的费用有着巨大的影响。@imbageek,这个问题解决了吗?我看到了一个类似的问题;8.5 RU不带排序,22.4 RU带索引日期时间字段排序,8.8 RU带_ts排序。@brudert不幸的是,我没有。让我知道你是否知道原因。:)