【问题标题】:SharePoint 2007: List theory QuestionSharePoint 2007:列表理论问题
【发布时间】:2009-11-04 10:33:42
【问题描述】:

我正在围绕 MOSS 2007 编写一个解决方案。并将相当大量的数据存储在一个列表中。

我的第一个问题是:列表可以处理大量数据 - 大约 200 000 项。现在我已经阅读了它,似乎列表的限制在于视图可以显示的项目数量(2000)。所以问题是:这是一个建议还是一个真正的限制?没有任何文件可以证实这一点。

第二个问题,如果它是视图可以显示多少项目的物理限制,这是否意味着它无法检查包含大量数据的共享点列表中的重复项?

从某种意义上说,要执行 wsList.getListItems,您必须传递一个视图(如果列表包含 100 000 条记录,而该视图只能包含 2000 条记录)如何检查重复项?

谢谢

【问题讨论】:

    标签: sharepoint wss


    【解决方案1】:

    巨大的榜单表现

    您可能想阅读“Scaling to Extremely Large Lists and Performant Access Methods”和“Best Practices for LARGE SharePoint Lists and Documents Libraries”。

    本文没有提到使用 SPList.Items.Add 添加列表项的另一件事,因为在大型列表中它是一个巨大的性能损失。你所做的是build efficient query,它不返回任何项目,然后将项目添加到该集合中(我读到 web 服务在添加项目时表现良好,但我再也找不到那篇文章了)。

    您还可以see some tests(或other tests)了解巨大列表的执行情况。

    至于重复

    您可能希望创建在晚上某处运行并检查重复项的计划作业 (SPJobDefinition)。

    比循环所有 SPListItem,然后为每个项目查询列表以检查重复项更好的主意可能是获取所有项目的 DataTable (SPListItemCollection.GetDataTable()) 并使用一些技术来确定重复项。

    观看次数

    过滤项目,查看相关项目并定义您的 RowLimit。这是视图的关键 - 您只需要最相关的项目,不是吗?

    【讨论】:

      【解决方案2】:

      您可以拥有非常大的列表,但性能会很糟糕。

      我们在一个项目中有超过 50,000 个项目的列表,我们发现查询和处理内容的最佳方式是使用 SPSiteDataQueryCrossListQueryCache 并以晦涩、烦人的 SharePoint CAML 方言格式化查询。

      【讨论】:

      • 这是否意味着 2000 年的限制是理论上的,而不是硬编码的强制限制?
      • 您可以查询比 2000 多得多的数据。(您可以在 SPQuery 或 SPSiteDataQuery 或 CrossListQueryCache 上指定 RowLimit)。
      • 不,没有限制,或者至少我们从未遇到过。
      【解决方案3】:

      如果可能,将项目分解为文件夹等容器有助于提高性能。如果其中一个列表项字段是某种类型的分类查找,则可以通过将项目放在该分类类型的文件夹中来替换它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        相关资源
        最近更新 更多