sharepoint - 在 SharePoint 中查询 4000 行列表非常慢
问题描述
我只想从 SiteUserInfoList 列表中获取项目列表。该列表包含大约 4000 行。
var watch = System.Diagnostics.Stopwatch.StartNew();
var qry = new SPQuery { Query = "<Where><Eq><FieldRef Name='ContentType'/><Value Type='Text'>MyValue</Value></Eq></Where>" };
var list = new List<Entity>();
using (var web = spSite.OpenWeb())
{
var groups = web.SiteUserInfoList.GetItems(qry);
foreach (SPListItem group in groups)
{
list.Add(new Entity
{
Id = group.ID,
Guid = group.UniqueId,
Title = group.Title
});
}
}
watch.Stop();
Console.Write(watch.ElapsedMilliseconds);
ElapsedMilliseconds 平均为 20 秒!怎么会这么长?!(服务器是一个 Xeon W-2145,为多个 VM 共享,但仍然 - CPU 使用率永远不会超过 20%)
我也试过:
获取整个列表并在代码中过滤它。它有点快(15秒)
ContentType Indexed 属性为 false(基于 ContentTypeId 的计算值),但 ContentTypeId 为 true。(所以我假设 ContentType 以某种方式被索引?)
使用 RowLimit 获取结果。使用 RowLimit = 5000 (?!) 获得最佳结果。(尝试了 100、1000、2000、...8000):6 秒,还是太长了!
任何想法?请帮助优化:) 谢谢。
解决方案
好的,我发现 ContentTypesEnabled 属性设置为 false。真的不知道这个属性的背后是什么,因为它没有很好的记录。而且我无法将其设置回false...
当我将其设置为 true 时,我现在不到2 秒!
推荐阅读
- git - 将一个 git 存储库合并到另一个
- python - 在输入数组上运行分类器(python)
- image - Xamarin - 如何显示来自 Object 属性的图像
- excel - 在具有相同工作簿的特定工作表的公式中使用的工作表的列表名称
- apache - Apache Isis 中的可自定义表列
- python - Python:RuntimeWarning:在正方形中遇到溢出
- excel - Excel VBA 将数据循环到电子邮件正文中
- laravel - 删除 Eloquent 中的第二层归属感
- javascript - 动态创建具有动态 onclick 功能的 div
- c - 在 C 中,如何打印出一个字符数组然后将其清空?