2012-11-30 96 views
0

嘗試從列表中獲取事件項目時,我發出只返回少量項目(約17)的CAML查詢。當我將列表視圖閾值設置爲10000時,一切正常,但是當我將LVT設置爲5000時,出現「由管理員設置的超出列表視圖閾值」錯誤。 我CAML查詢很簡單:SharePoint 2010展開重現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

列表中包含多少個事件?我不認爲這是查詢返回多少項目,而是列表中包含多少事件。 – Mathieu

+0

該列表包含超過5000個項目。限制CAML查詢的原因是,他們不會選擇超過LVT數量的項目。你的回答表明,如果任何列表的LVT數量超過了,那麼所有的CAML查詢都會失敗 - 事實並非如此。請再試一次。 –

回答

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> 
相關問題