SharePoint CAML查询-产生不同结果的Where条件的顺序

SharePoint CAML查询-产生不同结果的Where条件的顺序,sharepoint,office365,caml,Sharepoint,Office365,Caml,我在SharePoint Online中遇到了包含数千条记录的大型文档列表问题。我得到了一些视图的常规列表视图超过5000项错误,因此我试图通过日期字段过滤这些视图。我看到一些奇怪的结果,这些结果根据我的where条件的顺序而变化 当我按“事件日期”和“部门”字段排序时,查询成功 <View Scope=\"RecursiveAll\"> <Query> <OrderBy Override='TRUE'><FieldRef Name='ID' /

我在SharePoint Online中遇到了包含数千条记录的大型文档列表问题。我得到了一些视图的常规列表视图超过5000项错误,因此我试图通过日期字段过滤这些视图。我看到一些奇怪的结果,这些结果根据我的where条件的顺序而变化

当我按“事件日期”和“部门”字段排序时,查询成功

<View Scope=\"RecursiveAll\">
<Query>
    <OrderBy Override='TRUE'><FieldRef Name='ID' /></OrderBy>
    <Where>
        <And>
            <Geq><FieldRef Name='Event_x0020_Date' /><Value Type='DateTime'>2019-01-01T00:00:00Z</Value></Geq>
            <Eq><FieldRef Name='Division' /><Value Type='Text'>{division}</Value></Eq>
        </And>
    </Where>
</Query>

2019-01-01T00:00:00Z
{除法}

当我执行完全相同的查询,但条件相反时,我得到一个错误,即视图超过了列表视图阈值

<View Scope=\"RecursiveAll\">
<Query>
    <OrderBy Override='TRUE'><FieldRef Name='ID' /></OrderBy>
    <Where>
        <And>
            <Eq><FieldRef Name='Division' /><Value Type='Text'>{division}</Value></Eq>
            <Geq><FieldRef Name='Event_x0020_Date' /><Value Type='DateTime'>2019-01-01T00:00:00Z</Value></Geq>
        </And>
    </Where>
</Query>

{除法}
2019-01-01T00:00:00Z


在我看来,SharePoint确定第一个条件已经超过5000项,而不考虑第二个条件。我遗漏了什么吗?

在SharePoint查询中,如果第一个过滤器返回的项目超过5000个,则您将达到5000个项目的阈值。在应用AND的第二个条件之前,将单独评估每个条件

如果有超过5000个项目具有相同的分区,则不能将其作为第一个条件。但是,如果事件日期应用于少于5000个项目,则可以将其用作第一个条件,然后使用and添加分割条件

所以,是的,条件的顺序确实很重要