You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Graph API获取AAD中2.5万个会议室Object ID的效率?

优化AAD会议室Object ID获取性能的方法

原代码的性能瓶颈

你当前的代码存在N+1查询问题:获取2.5万个会议室后,循环中每个会议室都单独发起一次/users/{email}请求,累计2.5万次HTTP调用,不仅耗时极长,还容易触发Graph API的限流机制。

最优解决方案:直接复用Room对象的ID

在Microsoft Graph中,microsoft.graph.room类型的资源本身的Id属性,就是对应的Azure AD用户(会议室账户)的Object ID,完全不需要额外调用Users接口。

修改后的代码示例:

var roomUrl = graphClient.Places.AppendSegmentToRequestUrl("microsoft.graph.room");
var response = await new GraphServicePlacesCollectionRequest(roomUrl, graphClient, null)
    .Select("id, emailAddress") // 只请求需要的字段,进一步提升性能
    .GetAsync();

// 处理第一页数据
foreach (var room in response.CurrentPage)
{
    users.Add(room.Id); // 直接获取Object ID,无需额外请求
}

// 处理分页(2.5万个会议室必然存在多页结果)
while (response.NextPageRequest != null)
{
    response = await response.NextPageRequest.GetAsync();
    foreach (var room in response.CurrentPage)
    {
        users.Add(room.Id);
    }
}

额外优化建议

  • 使用Select方法指定仅需要返回的字段,减少响应数据量,提升传输和解析速度。
  • 若后续需要获取更多用户属性,可使用Graph API的批量请求功能,将多个查询打包为单次HTTP调用,但针对当前需求,直接复用Room的ID已经足以解决性能问题。

内容的提问来源于stack exchange,提问作者user989988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:15:44