使用asp.net gridview少量数据加载没问题但是大量数据加载是问题,加载时会花费多少时间避免?
我正在使用sqldataadapter并填充数据表并绑定到gridview
答案 0 :(得分:2)
我有这个问题,返回大约9000行,数据源访问存储过程。 sproc运行速度很快,但是当它被数据绑定到gridview时会运行缓慢。
我删除了存储过程中的order by
子句,并且它的快速点亮。网格希望能够按照自己的顺序进行。
答案 1 :(得分:1)
您需要执行两个查询,第一个是获取网格视图的所有页面中的记录总数(这是导致数据绑定非常慢的大量数据)。获得此总计数后,您需要计算可用于寻呼机控件的总页数。最后,您需要查询要从服务器检索的单个数据页。
例如,如果您的网格视图总共有1,000行(SELECT COUNT(*) FROM YourTable
)并且您希望每页显示25行,那么您将拥有40页(1,000 / 25 = 40
)的数据和对数据页面的任何单个请求只返回25条记录,而不是全部1,000条记录。
有关实现此逻辑的演练,请阅读Efficiently Paging Through Large Amounts of Data。
更新:
如果您对寻呼机控件不感兴趣,那么您可以实现无限滚动类型界面,当用户向下滚动页面时,然后从服务器获取下一页数据。请阅读Load Content While Scrolling With jQuery以获取更多信息。
答案 2 :(得分:0)
一次显示数千条记录并不是一个好主意 - 这可能是性能问题的主要原因。缓解这种情况的一种方法是将数据检索到DataTable,数据表缓存并在分页中使用它来显示,比如说每页50条记录。 (这样您就不必为每个页面更改/重新绑定命中数据库。)
即使这种方法适用于有限数量的记录,如果该数字变得很大 - 即使将所有记录检索到内存中的DataTable也不是一个选项,您将不得不实现服务器端分页以仅检索一部分数据来自DB一次。
也就是说,从.NET代码调用查询而不是SSMS中的直接执行调用减速的另一个常见原因可能是参数嗅探。如果SQL Server构建和缓存的执行计划不是最佳的查询执行 - 它可能真的会减慢它。尝试在构建SQL语句的代码末尾添加以下行:
答案 3 :(得分:0)
这需要服务器端分页。这意味着您的gridview每页仅加载10/15个条目。当您点击下一页时,它会再次点击您的数据库&带来接下来的10条记录。花一点时间设置但绝对值得。你会有很棒的表现。 Efficiently Paging through large results