SharePoint 2010 Развернуть повторения CAML Query, превышающий порог представления списка
Пытаясь получить элементы событий из списка, я запускаю 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 ответ
В случае, если кому-то интересно, мне удалось поиграться с Query и выяснить, как избежать превышения порога. Я просто изменил порядок элементов запроса, чтобы мои проиндексированные поля были перечислены первыми, а узел 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>