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

标签 azure azure-cosmosdb

此查询花费 265 RU/s: 选择顶部 1 * FROM c 其中 c.CollectPackageId = 'd0613cbb-492b-4464-b66b-3634b5571826' 按 c.StartFetchDateTimeUtc DESC 排序

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

此查询花费 5 RU/s: 选择顶部 1 * FROM c 其中 c.CollectPackageId = 'd0613cbb-492b-4464-b66b-3634b5571826' 按 c._ts DESC 排序

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

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

索引已就位,并遵循如何配置可排序字符串/时间戳的建议和教程。看起来像: { "路径": "/StartFetchDateTimeUtc/?", “索引”:[ { “种类”:“范围”, “数据类型”:“字符串”, “精度”:-1 } ] }

最佳答案

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

所以很奇怪的是不同的属性(property)花费不同的RU。

我还在我这边创建了一个测试演示(使用您的索引和相同的文档属性)。我已将 1000 条记录插入到 documentdb 中。两个不同的查询花费相同的 RU。我建议你可以开始一个新的集合并再次测试。

结果是这样的:

按 StartFetchDateTimeUtc 排序

enter image description here

按_ts排序

enter image description here

关于azure - 为什么按时间戳(字符串)排序的 Azure Cosmos 查询比按 _ts(内置)排序的成本高得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562789/

相关文章:

azure - 您能举个例子解释一下 Microsoft Azure 中的 Append Blob 吗?

azure - 使用存储服务 REST API 获取存储帐户属性

azure - SSIS 包执行失败(数据工厂)- 脚本组件未加载代码

nosql - 选择正确的方法使用 Azure Cosmos DB (MongoDB) 构建 Multi-Tenancy 架构

azure - 如何使用容器名称中的破折号查询 Cosmos DB

Windows 共享文件夹和 Azure

python - 在 docker 镜像中安装 pyodbc

mongodb - Azure Cosmos DB Mongodb $t 和 $v

c# - 如何在 cosmos db C# 中插入一个文档的项目列表?

azure - CosmosDB MongoDB API : New query is hidden