尝试从列表中获取事件项,我发出一个仅返回少量项目(大约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被超过?任何重构查询的建议都会很棒,但我确实需要查看所有重复发生的事件(不仅仅是主项)。
答案 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>