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

问题描述 投票:1回答:1

我们正在使用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行。执行过程需要16秒和190秒(用于chrome中的下载)。它正在使用“ myentity”中的所有字段。

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

最后,我将查询更改为仅返回ID而不是联接。然后,包括下载在内的执行时间减少为170 ms

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

dynamics-crm odata crm microsoft-dynamics dynamics-crm-webapi
1个回答
0
投票

某些在线搜索产生了来自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构建器中编写。

© www.soinside.com 2019 - 2024. All rights reserved.