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也可能有助于降低查询成本。
当然,一定要测试不同的方法,看看哪种方法成本最低。
我的 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也可能有助于降低查询成本。
当然,一定要测试不同的方法,看看哪种方法成本最低。