【问题标题】:Optimise loading large dataset to a table in asp.net mvc 4优化将大型数据集加载到 asp.net mvc 4 中的表
【发布时间】:2015-09-15 10:52:41
【问题描述】:

我正在创建 asp.net mvc 4 应用程序,在该应用程序中我将许多行加载到一个表中。

但是,此功能对于小型和平均数据集运行顺利,这意味着如果行数少于 1000 或少于 5000,则加载平均时间

该表的这个视图

但是当行数变高时,这意味着超过 5000 行,这需要太多时间才能将所有行加载到表中

这里是用于将值加载到表中的 LINQ 查询

public ActionResult StudentIndex()
{
    return View(db._student.Where(x => x.Create_By == userid).OrderByDescending(s => s.Create_Date).ToList());

}

这里一旦将值加载到表中,使用 Jquery Table sorter 函数执行分页功能,我忽略了排序。

这是jquery脚本代码sn-p

<script type="text/javascript">
    $(function () {
        $("#table-hover")
            .tablesorter({
                widthFixed: true
            })
            .tablesorterPager({
                container: $("#pager"),
                size: $(".pagesize option:selected").val()
            });
    });

 </script>

如何加快大型数据集的加载速度?我应该遵循什么方法?

【问题讨论】:

  • 不要尝试一次加载这么多记录。有更好的插件(DataTables 是我熟悉的插件)支持服务器端分页。还有WebGrid 助手。
  • 据我了解,一旦获取总行数 tablesorter 插件将这些结果除以 10 的一部分,然后是其当前值,这就是为什么它需要太多时间来加载大型数据集。
  • 简而言之,您试图获取太多数据。在服务器上实现分页是您能够长期解决此问题的唯一方法。 EntityFramework 具有 Skip() 和 Take() 方法,可用于提取记录块而不是整个表。
  • 如果我使用 EntityFramework Skip() 或 Take() 方法,我能否将 10 x 10 的块拉出?
  • 您可以同时使用它们,因为它们映射到(大致)等效的 SQL 命令。 Skip() 将光标移动到相关行,然后 Take() “选择”指定的行数;它基本上是 TOP 或 LIMIT 和 OFFSET 子句,具体取决于使用的底层 SQL 系统。

标签: c# jquery asp.net-mvc linq asp.net-mvc-4


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 2017-11-16
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多