首页 文章

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

提问于
浏览
0

尝试从列表中获取事件项,我发出一个仅返回少量项目的CAML查询(大约17个) . 当我将列表视图阈值设置为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 回答

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

相关问题