Asp.net Gridview数据绑定非常慢

Asp.net Gridview数据绑定非常慢,asp.net,gridview,Asp.net,Gridview,我使用asp.NETGridView将少量数据加载到网格不是问题,但将大量数据加载到网格i面临缓慢问题。如何避免 我正在使用sqldataadapter和fill to datatable并绑定到gridview您将需要执行两个查询,第一个是获取网格视图所有页面中的记录总数(这是导致数据绑定速度非常慢的大量记录)。获得此总数后,您需要计算可用于寻呼机控件的总页数。最后,您需要查询要从服务器检索的单个数据页 例如,如果您的网格视图总共有1000行(从表中选择COUNT(*),并且您希望页面每页显示

我使用asp.NETGridView将少量数据加载到网格不是问题,但将大量数据加载到网格i面临缓慢问题。如何避免


我正在使用sqldataadapter和fill to datatable并绑定到gridview

您将需要执行两个查询,第一个是获取网格视图所有页面中的记录总数(这是导致数据绑定速度非常慢的大量记录)。获得此总数后,您需要计算可用于寻呼机控件的总页数。最后,您需要查询要从服务器检索的单个数据页

例如,如果您的网格视图总共有1000行(
从表中选择COUNT(*
),并且您希望页面每页显示25行,那么您将有40页(
1000/25=40
)数据,对一页数据的任何单次请求将只返回25条记录,而不是所有1000条记录

有关实现此逻辑的演练,请阅读


更新:


如果您对寻呼机控件不感兴趣,那么可以实现一个无限滚动类型的界面,当用户向下滚动页面时,从服务器获取下一页数据。阅读了解更多信息。

一次显示数千条记录不是一个好主意-这可能是性能问题的主要原因。缓解这种情况的一种方法是将数据检索到DataTable中,缓存该DataTable并在分页中使用它来显示,比如说每页50条记录。(这样,您就不必为每次页面更改/重新绑定而点击数据库)

即使这种方法也适用于有限数量的记录,如果这个数量变得巨大——即使将所有记录检索到内存中的DataTable中也不是一个选项,您也必须实现服务器端分页,一次只从DB检索一部分数据


也就是说,当从.NET代码调用查询而不是在SSMS中直接执行查询时,另一个常见的减速原因可能是参数嗅探。如果SQL Server生成并缓存的执行计划对于当前的查询执行来说不是最佳的,那么它可能真的会减慢执行速度。尝试在构建SQL语句的代码末尾添加以下行:

,它调用服务器端分页。这意味着gridview每页只加载10/15个条目。当你点击下一个页面时,它会再次点击你的数据库&带来接下来的10条记录。设置需要一点时间,但绝对值得。你会有很好的表现

当数据源访问存储过程时,返回大约9000行时出现了这个问题。存储过程运行得很快,但在数据绑定到gridview时会运行得很慢


我删除了存储过程中的order by子句,它的速度很快。每个网格都想自己排序。

没有页面有什么想法吗control@Senthilkumar-请参阅我的答案中的
UPDATE
。只有一种方法可以避免性能问题:找出需要花费太长时间的问题,然后进行修复。您是否已确定代码的哪些部分花费的时间过长?谢谢您的建议