SharePoint 2010扩展重复发生CAML查询超出列表视图阈值

时间:2012-11-30 14:30:21

标签: sharepoint recurring-events

尝试从列表中获取事件项,我发出一个仅返回少量项目(大约17个)的CAML查询。当我将列表视图阈值设置为10000时,一切正常,但是当我将LVT设置为5000时,我得到“管理员设置的超出列表视图阈值”错误。 我的CAML查询非常简单:

<Where>
<And>
    <DateRangesOverlap>
        <FieldRef Name="EventDate" />
        <FieldRef Name="EndDate" />
        <FieldRef Name="RecurrenceID" />
        <Value Type="DateTime">
            <Now />
        </Value>
    </DateRangesOverlap>
    <And>
        <BeginsWith>
            <FieldRef Name="Place" />
            <Value Type="Text">Boston</Value>
        </BeginsWith>
        <Or>
            <Eq>
                <FieldRef Name="Status" />
                <Value Type="Text">Status1</Value>
            </Eq>
            <Eq>
                <FieldRef Name="Status" />
                <Value Type="Text">Status2</Value>
            </Eq>
        </Or>
    </And>
</And>

任何人都可以解释为什么会这样吗?是因为当扩展重复时SP实际上运行一个单独的查询,导致LVT被超过?任何重构查询的建议都会很棒,但我确实需要查看所有重复发生的事件(不仅仅是主项)。

1 个答案:

答案 0 :(得分:2)

如果有人感兴趣,我已设法使用查询并找出如何避免达到阈值。 我所做的只是更改查询元素的顺序,以便首先列出我的索引字段,最后列出DateRangesOverlap节点。以下结果有效:

    <Where>
<And>
    <BeginsWith>
        <FieldRef Name="Place" />
        <Value Type="Text">Boston</Value>
    </BeginsWith>
    <And>
        <Or>
            <Eq>
                <FieldRef Name="Status" />
                <Value Type="Text">Status1</Value>
            </Eq>
            <Eq>
                <FieldRef Name="Status" />
                <Value Type="Text">Status2</Value>
            </Eq>
        </Or>
        <DateRangesOverlap>
            <FieldRef Name="EventDate" />
            <FieldRef Name="EndDate" />
            <FieldRef Name="RecurrenceID" />
            <Value Type="DateTime">
                <Now />
            </Value>
        </DateRangesOverlap>
    </And>
</And>
</Where>