【问题标题】:C# Datasets, paging and large amounts of dataC# 数据集、分页和大量数据
【发布时间】:2010-09-19 21:19:11
【问题描述】:

我想在一个数据集中显示大量数据,100,000 条记录大约 10 列,这会消耗大量 ram 700MB。我也尝试过使用分页,这可以减少大约 15-20%,但我不太喜欢使用分页时涉及的上一个/下一个按钮。我目前没有将数据写入磁盘,应该是吗?如果是这样,最常用的方法是什么?数据不会在查看时永久存储,然后可以运行新查询并查看另外 70,000 条记录。最好的方法是什么?

感谢您的建议。

【问题讨论】:

  • 如何填充数据集? IE。那里的数据来源是什么?

标签: c# dataset


【解决方案1】:

现实情况是,最终用户很少需要查看其数据集的全部内容,因此我会使用您喜欢的方法来呈现数据(列表视图)并构建一个自定义寻呼机,以便数据集只使用所需记录数的结果。否则,每次页面加载都会导致重新调用数据集。

临时文件的 XML 方法或利用通过存储过程创建的临时表是替代方法,但您仍然必须筛选并呈现数据。

【讨论】:

    【解决方案2】:

    一个重要的问题是这些数据来自哪里。这将有助于确定您可以使用哪些选项。写入磁盘可以,但它可能不是最佳选择,原因有以下三个:

    1. 作为用户,如果您的应用程序突然占用了 700Mb 的磁盘空间而没有任何警告,我会非常恼火。但是,然后,我会注意到这样的事情。我想很多用户不会。仍然:空间很大。
    2. 根据数据源的不同,即使是初始传输也可能需要比您实际允许的时间更长的时间。
    3. 同样,作为用户,我无法手动挖掘价值 700Mb 的数据。这意味着您几乎可以肯定永远不需要展示它。您只想加载请求的页面,一次加载一个(或几个)页面。

    【讨论】:

      【解决方案3】:

      我建议使用内存映射文件...不确定 .NET 是否包含对它的支持。

      【讨论】:

        【解决方案4】:

        需要处理和保存在内存中的大量数据。

        这是一个 ASP.NET 应用程序吗?还是 Windows 应用?

        我个人发现,使用自定义寻呼机设置(控制,下一个先前的链接)和在数据库级别进行分页是获得最佳性能的唯一可能方法,只获取所需的数据....

        【讨论】:

          【解决方案5】:

          如果你想减少内存占用,请实现paging in SQL

          【讨论】:

            猜你喜欢
            • 2018-11-03
            • 1970-01-01
            • 2015-09-28
            • 1970-01-01
            • 1970-01-01
            • 2015-05-02
            • 1970-01-01
            • 2016-04-16
            相关资源
            最近更新 更多