cosmos db sql api datetimepart 函数递增 rus

cosmos db sql api datetimepart function increasing rus

我的 cosmos 数据库以每分钟的时间间隔存储数据,我想根据开始日期和结束日期使用不同的时间间隔来查询它。 但是当使用 DateTimePart 函数时,RU 急剧增加。 如果没有 datetimepart 函数,一个月的数据是 184,如果我添加 datetimepart 函数,它会跳到 6000。

我试过这样的查询:

SELECT c.config,c.datetime
FROM c where c.config='DBM'  and c.datetime >='2021-04-21T07:02:16' 
and c.datetime <='2021-05-21T07:02:16' and (DateTimePart('minute' , c.body.metadata.datetime) % 60) = 0

以及使用子查询连接,但仍然无法降低 rus。

有没有人有任何其他想法我可以使用间隔查询数据,所以基本上如果我查询一个月的数据,但选择每小时间隔,我应该获取该月每小时的数据

萨沙

对于常见且昂贵的查询,在模型中合并额外的派生字段以优化查询成本是有意义的。例如,如果您总是在小时标记处查询项目,您可以在这些记录中附加 属性 minuteOfHour: 0,然后使用更直接的查询:

SELECT c.config,c.datetime
FROM c where c.config='DBM' and c.minuteOfHour = 0 and c.datetime >='2021-04-21T07:02:16' 
and c.datetime <='2021-05-21T07:02:16'

换句话说,策略是预先计算一次,而不是强制查询引擎在每个项目的每个查询中执行工作。

添加一个或多个composite indexes也可能有助于降低查询成本。

当然,一定要测试不同的方法,看看哪种方法成本最低。