Javascript 使用SPSServices查询大型列表并避免列表视图阈值。。。特征

Javascript 使用SPSServices查询大型列表并避免列表视图阈值。。。特征,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,因此,我有一个列表,其中将包含数以万计的项目,我需要在使用SPServices时执行查询。阈值设置为8000,因此我对此有异议 到目前为止,我已经尝试通过将项目放入文件夹和索引列(我将在查询中使用)来优化列表 看来,让它正常工作的唯一真正诀窍是正确地为列编制索引:然而,即使为列编制了索引,我仍然有问题: 如果我为列“Keyword1”和“Keyword2”编制索引,如果我在查询中只使用其中一个字段,我就可以很好地查询列表,但只要我在Where子句中使用Or谓词包含这两个字段,我就会得到阈值错误

因此,我有一个列表,其中将包含数以万计的项目,我需要在使用SPServices时执行查询。阈值设置为8000,因此我对此有异议

到目前为止,我已经尝试通过将项目放入文件夹和索引列(我将在查询中使用)来优化列表

看来,让它正常工作的唯一真正诀窍是正确地为列编制索引:然而,即使为列编制了索引,我仍然有问题:

如果我为列“Keyword1”和“Keyword2”编制索引,如果我在查询中只使用其中一个字段,我就可以很好地查询列表,但只要我在Where子句中使用Or谓词包含这两个字段,我就会得到阈值错误

最后几句话突出了问题所在“在这种情况下,您可以通过索引标题字段来避免问题。这将使SharePoint能够从索引中确定按标题排序的前100个项目,而无需扫描数据库中的所有10000个列表项目适用于排序操作的相同概念也适用于列表查询中的where子句和join谓词。谨慎使用列索引可以缓解许多大型列表性能问题,并帮助您避免查询限制。”

如何索引列,以便执行更复杂的查询,例如

<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()

非常感谢。刚刚帮我省去了几个小时的头痛