使用活动方查询表达式需要20秒才能执行

时间:2015-03-02 15:47:37

标签: c# .net dynamics-crm-2011 crm

我试图在所需的与会者中获得具有特殊列表帐户的约会。这是我如何构建查询。

var query = new QueryExpression("appointment")
{
    ColumnSet = columnSet,
    Criteria = new FilterExpression(LogicalOperator.And)
    {
        Conditions =
            {
                new ConditionExpression("scheduledstart", ConditionOperator.GreaterEqual, DateTime.Now),
                new ConditionExpression("scheduledstart", ConditionOperator.LessEqual, DateTime.Now.AddYears(1)),
                new ConditionExpression("statuscode", ConditionOperator.In, new []{1, 5})
            }
    }
};

var le = new LinkEntity
{
    LinkFromEntityName = "activitypointer",
    LinkFromAttributeName = "activityid",
    LinkToEntityName = "activityparty",
    LinkToAttributeName = "activityid",
    LinkCriteria = new FilterExpression
    {
        FilterOperator = LogicalOperator.Or,
        Conditions =
            {
                new ConditionExpression("partyid", ConditionOperator.Equal, accountGuid)
            }
    }
};

为链接表达式添加条件

 _accountRepository.GetAccounts()
                .Select(a => new ConditionExpression("partyid", ConditionOperator.Equal, a.Id))
                .ForEach(c => le.LinkCriteria.AddCondition(c));

此请求需要大约20秒才能执行。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现使用日期字段执行查询(正如您所做的那样 - 使用scheduledstart)可能会很慢。

原因是CRM需要将字段转换为本地时间,这似乎很慢。

你可以尝试:

  1. 删除日期表达式会显着提高速度吗?
  2. 您可以使用scheduledstart utc (不会尝试本地化日期)吗?
  3. 麦克