汇总查询超过限制?(Aggregate Query limit exceeded?)

2019-09-16 12:21发布

我有一个2部分的问题:

第一个问题 :我知道有5000个记录的查询限制查询记录时,出于性能的原因,但有没有这样做汇总查询时是否有限制? 如果是这样,是什么呢? 我只需要查询的记录数和一个实体,我可以得到的39,000+记录的结果,但对于其他实体我看到这样的错误信息:

System.ServiceModel.FaultException 1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: AggregateQueryRecordLimit exceeded. Cannot perform this operation. (Fault Detail is equal to Microsoft.Xrm.Sdk.OrganizationServiceFault).

我一直在寻找所有在线,但找不到汇总/计数查询的查询限制什么。

第二个问题 :是否有一个简单的方法来查询大量的记录的COUNT不影响性能? 我不认为这样一个数量应该要求太多的开销。 如果是有极限的,我的想法是要实现分页的循环,只是检索计数对于给定的页面,而每次递增页码,直到返回0的记录。 然而,当我尝试这样做,它似乎忽略pagecount初始属性<Fetch>标签。

我不知道是否有一个更好/更简单的方法来做到这一点?

Answer 1:

我不能说太多你的第一个问题,但它看起来像有人在MSDN上可能已经找到了解决办法 。 尤见链接的论坛上发帖为实际的解决方案。

对于第二个问题, COUNT是比较容易处理。 请参阅上FetchXML聚集MSDN文章的很多例子。

<fetch distinct='false' mapping='logical' aggregate='true'> 
    <entity name='opportunity'> 
       <attribute name='name' alias='opportunity_count' aggregate='count'/> 
    </entity> 
</fetch>

该查询生成的SQL将如下:

SELECT
    COUNT(*) AS opportunity_count
FROM
    Opportunity


文章来源: Aggregate Query limit exceeded?