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



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

正常情况下,当花费这么长时间检索项目时,您将遇到边界或限制。

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

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

欢呼

Truez

一次获取多个项目肯定不是最佳实践,也不是建议的方法。

你必须考虑其他选择,比如

  • 列索引:与你使用的SharePoint版本相关;评估和测试它是否真的能给你的情况带来一些好处
  • 通过找到最适合您的数据的组,以及阈值,将获取数据查询拆分为多个查询。通过这种方式,您可以并行运行查询,并可能看到性能优势
  • 使用搜索:依赖于SharePoint搜索引擎,在SharePoint版本之间有很大的不同,但可以肯定的是,这将导致比SPQuery快得多。缺点是必须依靠搜索抓取时间表来获取最新数据

相关内容

  • 没有找到相关文章

最新更新