SharePoint:检索所有列表项的有效方法

时间:2015-05-14 07:37:33

标签: list sharepoint splistitem splist spquery

我正在检索包含大约4000个项目的列表中的所有项目。 但似乎需要更长的时间才能获取约15至22秒的所有项目。 有没有最好的方法在可忽略的时间内从列表中获取所有项目?
以下是我用于获取所有项目的代码:

 using (SPSite spSite = new SPSite(site))
            {
                using (SPWeb web = spSite.OpenWeb())
                {
                    list = web.Lists["ListName"];
                    SPQuery query1 = new SPQuery();
                    string query = "<View>";
                    query += "<ViewFields>";
                    query += "<FieldRef Name='ID' />";
                    query += "<FieldRef Name='Title' />";                    
                    query += "</ViewFields>";
                    query += "<Query>";
                    query += "<Where>";
                    query += "<Eq>";
                    query += "<FieldRef Name='ColName'></FieldRef>";
                    query += "<Value Type='Boolean'>1</Value>";
                    query += "</Eq>";
                    query += "</Where>";
                    query += "</Query>";

                    query += "</View>";
                    query1.Query = query;
                    SPListItemCollection listItems = list.GetItems(query1);
                }
            }

2 个答案:

答案 0 :(得分:0)

通常情况下,当你花费这么长时间来检索你正在达到边界或限制的物品时。

首先你需要测试你的查询限制,所以你返回少于2000个项目,或直到你发现它开始变得难以置信地慢。

然后你需要看看你是否可以破解你的查询,或者根据这个数字做多个查询来获取你的项目。

干杯

Truez

答案 1 :(得分:0)

一次拍摄许多物品肯定不是最佳做法或建议方式。

您必须研究其他选项,例如

  • 列索引:与您正在使用的SharePoint版本相关;评估和测试是否真的可以为您的案件带来一些好处
  • 通过查找最适合您的数据的组以及阈值,将数据查询拆分为多个查询。通过这种方式,您可以并行运行查询,并可能看到性能优势
  • 使用搜索:依赖SharePoint搜索引擎,SharePoint版本之间存在很大差异,但与 SPQuery 相比,这肯定会变得非常快。由于必须依赖搜索爬网计划来获取最新数据