从 DocumentDb 中读取整个对象是否更快、更高效?

Is reading whole object from DocumentDb faster and more efficient?

我想了解从 Azure DocumentDb 读取整个文档是否真的比读取其中可能包含多个对象的 属性 更有效?

我们以这个篮球队对象为例:

{
   id: 123,
   name: "Los Angeles Lakers",
   coach: "Byron Scott",
   players: [
      { id: 24, name: "Kobe Bryant" },
      { id: 3, name: "Anthony Brown" },
      { id: 4, name: "Ryan Kelly" },
   ]
}

如果我只想获得一份球员名单,我是 efficient/faster 阅读整个团队文档以便从中提取球员,还是发送 SQL 更好?语句并尝试只读取文档中的玩家?

仅返回玩家将在网络上更有效率,因为您返回的数据更少。而且,您还应该能够查看为您的查询消耗的请求单位。

例如,我将您的文档放入我的一个集合中,并 运行 门户中的两个查询(如果您这样做,并查看门户底部,您会看到产生的请求单位成本)。我用唯一 ID 和引号对您的文档进行了轻微修改,以便我可以通过门户加载它:

{
   "id": "basketball123",
   "name": "Los Angeles Lakers",
   "coach": "Byron Scott",
   "players": [
      { "id": 24, "name": "Kobe Bryant" },
      { "id": 3, "name": "Anthony Brown" },
      { "id": 4, "name": "Ryan Kelly" }
   ]
}

我首先选择了玩家数据:

SELECT c.players FROM c where c.id="basketball123"

RU 成本为 2.2:

然后我要了整个文档:

SELECT * FROM c where c.id="basketball123"

RU 成本为 2.24:

注意:您的文档很小,所以这里真的没有太大区别。但至少你可以看到,返回一个子集比返回整个文档成本更低。