Asp.net 分页和性能

Asp.net 分页和性能,asp.net,database,performance,gridview,paging,Asp.net,Database,Performance,Gridview,Paging,问: 我想问一下:寻呼 net中的分页功能对性能有什么影响吗?我的意思是,有时我有大数据,如果我想在gridview上绑定这些数据,例如,是“分页”吗?例如,通过计数10,带来10条记录和10条记录等等,或者类似于如果我不使用分页,它首先带来所有数据,然后根据分页计数查看它们。。如果分页与性能之间没有关系,那么这种情况下的最佳实践是什么?这取决于分页的实现方式。一些服务器控件的早期版本处理分页,将整个数据集读入内存,然后选择可用记录的子集。这是非常低效的,因为您已经承担了从数据库中移动数据的传输

问: 我想问一下:寻呼


net中的分页功能对性能有什么影响吗?我的意思是,有时我有大数据,如果我想在gridview上绑定这些数据,例如,是“分页”吗?例如,通过计数10,带来10条记录和10条记录等等,或者类似于如果我不使用分页,它首先带来所有数据,然后根据分页计数查看它们。。如果分页与性能之间没有关系,那么这种情况下的最佳实践是什么?

这取决于分页的实现方式。一些服务器控件的早期版本处理分页,将整个数据集读入内存,然后选择可用记录的子集。这是非常低效的,因为您已经承担了从数据库中移动数据的传输成本,以及存储数据的内存成本


您可以做的是在数据库级别执行分页,传入页码和要检索的项数,这样您就只读取源位置的数据子集。这会更有效。唯一的缺点是,您可能需要在数据库中抛出另一个查询来确定项目的总数,以便正确地分页。总而言之,我认为“源位置分页”始终是首选的解决方案

这取决于分页的实现方式。一些服务器控件的早期版本处理分页,将整个数据集读入内存,然后选择可用记录的子集。这是非常低效的,因为您已经承担了从数据库中移动数据的传输成本,以及存储数据的内存成本


您可以做的是在数据库级别执行分页,传入页码和要检索的项数,这样您就只读取源位置的数据子集。这会更有效。唯一的缺点是,您可能需要在数据库中抛出另一个查询来确定项目的总数,以便正确地分页。总而言之,我认为“源位置分页”始终是首选的解决方案

据我所知,所有ASP.NET服务器控件(如DataGrid)都会加载整个结果集,然后只显示一个页面。你必须自己实现这一点


这里有一个讨论:

据我所知,所有ASP.NET服务器控件(如DataGrid)都加载整个结果集,然后只显示一个页面。你必须自己实现这一点


这里有一个关于这方面的讨论:

非常感谢,那么.net 3.5中服务器控件的分页呢?启用LINQ的O/RM工具(如LINQ to SQL和Entity Framework)可以提供很多帮助,因为分页非常简单,只需添加
.Skip(page*pageSize)。将(pageSize)
添加到查询(
IQueryable
)。请您澄清“在源位置分页”是什么意思?@just_name:为什么不使用SQL Server探查器查看执行的查询类型?您将立即看到是否正在进行数据库分页或一次性检索100亿条记录:-)无论您如何实现分页,始终确保页面中从不显示整个数据。在Gridview中使用条件显示逻辑(基于数据的不同样式)使用模板列生成的记录即使只有很少的100条,在渲染时也可能需要大量时间。因此,请始终实现分页,以确保网格的呈现不会占用页面加载时间。希望有帮助!非常感谢,关于.net 3.5中服务器控件的分页功能呢?启用LINQ的O/RM工具(如LINQ to SQL和Entity Framework)可以提供很多帮助,因为分页非常简单,只需添加
。跳过(page*pageSize)。将(pageSize)
带到查询(
IQueryable
)。请澄清“在源代码处分页”是什么意思?@just_name:为什么不使用SQL Server探查器查看执行的是哪种查询?您将立即看到是否正在进行数据库分页或一次性检索100亿条记录:-)无论您如何实现分页,始终确保页面中从不显示整个数据。在Gridview中使用条件显示逻辑(基于数据的不同样式)使用模板列生成的记录即使只有很少的100条,在渲染时也可能需要大量时间。因此,请始终实现分页,以确保网格的呈现不会占用页面加载时间。希望有帮助!