SharePoint CAML 查询 - Where 条件的顺序给出不同的结果

SharePoint CAML query - order of Where conditions giving different results

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

当我按"Event Date" AND "Division"字段排序时,查询成功。

<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>

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

<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>

在我看来,SharePoint 确定第一个条件已经超过 5000 个项目,而不会理会第二个条件。我错过了什么吗?

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

如果您有超过 5000 个具有相同分类的项目,则不能将其用作第一个条件。但如果事件日期适用于少于 5000 个项目,则可以将其作为第一个条件,然后用 AND 添加划分条件。

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