具有扩展功能的Dynamics CRM 365 Odata查询的性能较差

我们正在使用odata字符串查询实体,例如:

https://myinstance.crm99.dynamics.com/api/data/v9.0/myentity?$expand=my_field1_ref($select=field1,field2),my_field2_ref,my_field3_ref($select=field1,field2,field3),...&$orderby=createdon+desc&$filter=_my_entity2_ref_value+eq+696f0125-d1cf-e813-a95f-000d3ab490f3+and+statecode+ne+1

此查询共有7个联接,并返回约1000行。 在Chrome浏览器中,执行需要 16 秒和 190 秒。它正在使用“ myentity”中的所有字段。

在展开前添加$select部分时,仅返回列出的字段,执行时间减少到11秒,而chrome中的下载仅花费48秒。

最后,我将查询更改为仅返回ID而不是联接。这样,包括下载在内的执行时间将缩短为 170毫秒

谁能解释为什么联接的性能这么差?由于添加联接是SQL Server中的标准,因此使用联接似乎很明显,因为它应该很快。

tqscf 回答:具有扩展功能的Dynamics CRM 365 Odata查询的性能较差

一些在线搜索产生了来自SAP支持,ASP.NET核心等的结果,它们讨论了相同的OData扩展性能限制。这意味着此问题不仅限于Dynamics odata Web API。与SQL联接不同,带有联接实体扩展的查询将构成更多的子查询,从而降低性能。

我建议您根据所需的相同条件构建FetchXML查询,并且可以使用Web api端点进行查询。由于本机平台的支持,这应该是有效的。 Read more

https://[Organization URI]/api/data/v9.0/contacts?fetchXml=<encoded query>

您可以在CRM和download the fetchXML query中组成高级查找查询。或在XrmToolBox fetchxml构建器中编写它。

本文链接:https://www.f2er.com/2993038.html

大家都在问