是否对documentdb文档上的_ts建立索引?

时间:2016-08-29 19:33:11

标签: azure-cosmosdb

使用基于时间戳的BETWEEN查找来包含我自己的时间戳(毫秒)以获得更高性能的查询会更好吗?

我从之前的帖子中了解到,它表示为自1970年以来的秒数。由于它是一个核心元素,我猜它没有被编入索引。

1 个答案:

答案 0 :(得分:5)

_ts在DocumentDB中默认为范围索引和最大精度(-1),除非用户明确覆盖。因此,您可以对其执行范围查询。

也就是说,如果您需要一个更精细的时间戳(以毫秒为单位),最好使用您自己的更高精度属性。例如,您可以将时间戳用作ISO 8601格式的字符串,例如 - “2016-08-29T21:48:38.334”,以及属性的范围索引。这将有两个目的 - 使日期和时间成为人类可读的,并有效地针对该属性执行范围查询。具有此时间戳属性(例如,命名为“createdTs”)的示例查询将是:

SELECT r.id FROM root r WHERE 
r.createdTs > "2016-08-29T21:48:38.334" and r.createdTs < "2016-08-29T21:50:00.000"