3

我有一个两部分的问题:

第一个问题:我知道查询记录时有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 条记录。但是,当我尝试这样做时,它似乎忽略了初始标签的pageand属性。count<Fetch>

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

4

1 回答 1

3

对于您的第一个问题,我不能说太多,但看起来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
于 2012-04-12T20:27:44.120 回答