如何避免在sharepoint 2010的大型列表(超过200k项目)中出现阈值错误

时间:2013-07-13 18:45:47

标签: sharepoint sharepoint-2010

我有一个包含超过200 000条记录的非常大的列表,但是我通过提高视图阈值来获取记录。但是所有这些都使应用程序变得非常慢,所以我正在寻找从大型列表中获取项目的高效且标准的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要在您的fecthes中使用分页,并确保是否要过滤以在列中设置正确的索引

在MSDN上查看这篇文章:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.listitemcollectionposition.aspx

此代码段将以10个批次迭代您的列表:

using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb)
{
    SPList oList = oWebsiteRoot.Lists["Announcements"];
    SPQuery oQuery = new SPQuery();
    oQuery.RowLimit = 10;    oQuery.Query = "<OrderBy Override=\"TRUE\">" +  
       "<FieldRef Name=\"FileLeafRef\" /></OrderBy>";
    int intIndex = 1;

    do
    {
        Response.Write("<BR>Page: " + intIndex + "<BR>");
        SPListItemCollection collListItems = oList.GetItems(oQuery);

        foreach(SPListItem oListItem in collListItems)
        {
            Response.Write(SPEncode.HtmlEncode(oListItem["Title"]) + 
              "<BR>");
        }
        oQuery.ListItemCollectionPosition = 
          collListItems.ListItemCollectionPosition;
        intIndex++;
    } while(oQuery.ListItemCollectionPosition != null);
}