DocumentDB 查询需要意外的高 RU

DocumentDB Query Requires Unexpected High RUs

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

但是当我 运行 我的查询时,我惊讶地发现它需要 7245.81 RU。由于 S3 为 2500 RUs/Second,因此此性能无法扩展到我的应用程序。

我只想问一下我是否做错了什么,是否有什么可以改进的地方?

我的查询是这样的:

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" 作为索引类型。这会影响此查询的性能吗?

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

  1. 如果item.State的可能取值个数有限,例如1-10,那么您可以使用IN枚举有效值,即item.State IN (1,2,3 ,4,6,7,8,9,10)
  2. 如果这不可能,请使用范围,例如 item.State > 5 或 item.State < 5,如 Larry 上面所建议的。

希望这对您有所帮助。如果您想更详细地讨论,请给我发电子邮件至 arramac at microsoft dot com。