是否有人对这两种从CosmosDB检索单个对象的方法进行了分析?
container.ReadItemAsync<Device>("devices", new PartitionKey(deviceId), null, default);
VS
container.GetItemLinqQueryable<Device>(true).Where(a => a.DeviceId == deviceId).FirstOrDefault();
我的猜测是ReadItemAsync更快,但有人知道吗?
答案 0 :(得分:1)
ReadItemAsync不仅更快,而且更便宜。
ReadItem进行点读取操作,根据项目的大小,其固定量为RUs(请求单位)。如果项目大小不变,则该操作将始终消耗相同的RU。
ItemLinqQueryable进行查询,这将消耗更多的RU(并且这些RU可能会有所不同),并且取决于所配置的索引策略。
答案 1 :(得分:0)
ReadItemAsync实际上读取JSON并将其反序列化为强类型的C#对象。如果您要修改文档作为后端业务逻辑的一部分,那么使用起来就很有意义。
而GetItemLinqQueryable实际上会执行遍历集合的查询,与ReadItemAsync相比,它将花费更多的RU