DocumentDB查询需要意外的高RU

时间:2015-05-30 01:28:46

标签: azure azure-cosmosdb

我有大约200MB的数据存储在S3文档集合中(最高的一个)。每个文档大小约为300KB。

但是当我运行查询时,我很惊讶它需要7245.81 RU。由于S3的速度为2500 RU /秒,因此我的应用程序的性能不会达到规模。

我只是想问我是否做错了什么以及我能做些什么来改善它?

我的查询是这样的:

SELECT item.Id,item.Priority, va.something, wa.something... 11 fields in total
FROM model.Item item 
JOIN va in item.Content.Children 
JOIN wa in va.Children 
WHERE item.State != 5

我正在使用" Range"作为索引类型。这会影响此查询的效果吗?

1 个答案:

答案 0 :(得分:2)

使用!=查询将需要扫描,因为必须查找所有索引条目以消除不等于5的值。这将导致高RU。请尽可能尝试将查询重写为相等或范围查询。

  1. 如果item.State的可能值的数量有限,例如1-10,那么您可以使用IN枚举有效值,即item.State IN(1,2,3,4,6,7) ,8,9,10)
  2. 如果不可能,请使用范围,例如item.State> 5 OR item.State< 5喜欢Larry上面提到的。
  3. 希望这会有所帮助。如果您想更详细地讨论,请发送电子邮件至arramac at microsoft dot com。