我正在使用以下代码
处理documentdb var ee =client.CreateDocumentQuery<dynamic>(collection.SelfLink, querySpec)
我执行
时遇到性能问题 ee.ToList();
完成700多条记录大约需要1分钟以上。 (如果返回结果更多,则需要更长的时间才能完成操作) 如果我在Azure Query Explore上尝试查询,则只需几秒钟。
我可以做些什么来优化代码?或者无论如何我可以将返回结果作为JSON字符串。
感谢。
答案 0 :(得分:-1)
尝试将maxItemCount增加到-1(最大值)并查看效果是否有效:
var ee =client.CreateDocumentQuery<dynamic>(collection.SelfLink, querySpec, new FeedOptions { MaxItemCount = -1 })
请注意,由于两个原因,它仍然不会像在查询资源管理器上运行一样快:
查询资源管理器在获取一个页面后立即返回。通过指定ToList()
,您将等待所有返回。查询资源管理器默认为100而不是-1,因此它会更快地返回。为了公平比较,请增加查询资源管理器案例的每页项目数。您可能需要考虑一种分页方法(页面大小较小),以便您的应用程序部分呈现初始页面并使其看起来更高效。
其他人报告说,我个人在穿越蔚蓝数据中心边界时每次往返都经历了很长的延迟。从同一数据中心的node.js服务器调用时,我得到10毫秒的延迟。使用本地运行的相同代码时,它至少需要250毫秒。我测得的ping延迟是26ms,所以我假设延迟是在数据中心边界而不是我的网络上添加的。您可能需要考虑在与DocumentDB相同的数据中心中运行代码。
至于作为JSON字符串返回,这里有2.5个选项: