Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List SharePoint:检索所有列表项的有效方法_List_Sharepoint_Splistitem_Splist_Spquery - Fatal编程技术网

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

List SharePoint:检索所有列表项的有效方法,list,sharepoint,splistitem,splist,spquery,List,Sharepoint,Splistitem,Splist,Spquery,我正在从包含大约4000个项目的列表中检索所有项目。 但取回所有物品似乎需要更长的时间,大约15到22秒。 有什么最佳方法可以在可忽略不计的时间内从列表中提取所有项目吗? 以下是我用于获取所有项目的代码: using (SPSite spSite = new SPSite(site)) { using (SPWeb web = spSite.OpenWeb()) {

我正在从包含大约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);
                }
            }
使用(SPSite SPSite=新SPSite(站点))
{
使用(SPWeb=spSite.OpenWeb())
{
list=web.Lists[“ListName”];
SPQuery query1=新建SPQuery();
字符串查询=”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“1”;
查询+=“”;
查询+=“”;
查询+=“”;
查询+=“”;
query1.Query=Query;
SPListItemCollection listItems=list.GetItems(query1);
}
}

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

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

然后,您需要查看是否可以分解查询,或者根据此图执行多个查询以获取项目

干杯


Truez

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

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

  • 列索引:与您正在使用的SharePoint版本相关;评估并测试在您的案例中是否真的能带来一些好处
  • 通过查找最适合您的数据的分组依据以及阈值,将获取数据查询拆分为多个查询。通过这种方式,您可以并行运行查询,并可能看到性能优势
  • 使用搜索:依赖SharePoint搜索引擎,SharePoint版本之间有很大的不同,但可以肯定的是,这将导致与SPQuery相比速度极快。其缺点是必须依赖搜索爬网计划来获取最新数据

我认为使用CAML查询是快速获取列表项的最佳方法。是的,这是最好的方法,但它花费了太多时间。您知道减少获取时间的解决方法吗?您使用的是什么sharepoint版本2007?我使用的是sharepoint 2013。