Javascript 使用SPSServices查询大型列表并避免列表视图阈值。。。特征
因此,我有一个列表,其中将包含数以万计的项目,我需要在使用SPServices时执行查询。阈值设置为8000,因此我对此有异议 到目前为止,我已经尝试通过将项目放入文件夹和索引列(我将在查询中使用)来优化列表 看来,让它正常工作的唯一真正诀窍是正确地为列编制索引:然而,即使为列编制了索引,我仍然有问题: 如果我为列“Keyword1”和“Keyword2”编制索引,如果我在查询中只使用其中一个字段,我就可以很好地查询列表,但只要我在Where子句中使用Or谓词包含这两个字段,我就会得到阈值错误 最后几句话突出了问题所在“在这种情况下,您可以通过索引标题字段来避免问题。这将使SharePoint能够从索引中确定按标题排序的前100个项目,而无需扫描数据库中的所有10000个列表项目适用于排序操作的相同概念也适用于列表查询中的where子句和join谓词。谨慎使用列索引可以缓解许多大型列表性能问题,并帮助您避免查询限制。” 如何索引列,以便执行更复杂的查询,例如Javascript 使用SPSServices查询大型列表并避免列表视图阈值。。。特征,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,因此,我有一个列表,其中将包含数以万计的项目,我需要在使用SPServices时执行查询。阈值设置为8000,因此我对此有异议 到目前为止,我已经尝试通过将项目放入文件夹和索引列(我将在查询中使用)来优化列表 看来,让它正常工作的唯一真正诀窍是正确地为列编制索引:然而,即使为列编制了索引,我仍然有问题: 如果我为列“Keyword1”和“Keyword2”编制索引,如果我在查询中只使用其中一个字段,我就可以很好地查询列表,但只要我在Where子句中使用Or谓词包含这两个字段,我就会得到阈值错误
<Query><Where><Or><Eq><FieldRef Name='Keyword1' /><Value Type='Text'>TEST1</Value></Eq><Eq><FieldRef Name='Keyword2' /><Value Type='Text'>TEST2</Value></Eq></Or></Where></Query>
TEST1TEST2
我尝试了很多选择。我认为有希望的一个是通过在查询中指定ViewName或FolderName来查询各个文件夹,但这似乎没有绕过阈值错误
有什么建议或选择吗?您是否尝试将列表阈值提高到更高的值 解决方法是“通过将SPList.enableTrottling属性设置为false来覆盖单个列表的列表视图阈值
private static void DisbaleListThrottling()
{
using (SPSite spSite = new SPSite("http://YourSiteNameHere.com/TeamSite/"))
{
using (SPWeb spWeb = spSite.OpenWeb())
{
SPList spList = spWeb.Lists["MyList1"];
spList.EnableThrottling = false;
spList.Update();
}
}
}
您还可以使用powershell:-
$web = Get-SPWeb http://whateverWeb
$list = $web.Lists[“List Title”]
$list.enablethrottling = $false
$lst.update()
非常感谢。刚刚帮我省去了几个小时的头痛