0

我正在从包含大约 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);
                }
            }
4

2 回答 2

0

通常,当检索项目需要这么长时间时,您会达到边界或限制。

首先,您需要测试设置查询的限制,因此您返回的项目少于 2000 个,或者直到您发现它开始变得令人难以置信的缓慢。

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

干杯

特鲁兹

于 2015-05-21T21:02:26.940 回答
0

一次获取许多项目肯定不是最佳实践或建议的方式。

您必须研究替代选项,例如

  • 列索引:与您使用的 SharePoint 版本相关;评估和测试是否真的可以为您的案例带来一些好处
  • 通过找到最适合您的数据的组以及阈值,将获取数据查询拆分为多个查询。通过这种方式,您可以并行运行查询,并且可能会看到性能优势
  • 使用搜索:依赖于 SharePoint 搜索引擎,SharePoint 版本之间有很大不同,但与SPQuery相比,这肯定会非常快。不得不依靠搜索爬网计划来获取最新数据的缺点
于 2015-05-21T21:35:23.243 回答