手机版

ASP.NET 2.0中的操作数据25:提高大数据量中的分页效率

时间:2021-11-01 来源:互联网 编辑:宝哥软件园 浏览:

介绍

正如我们在前面的教程中所讨论的,有两种方法可以实现:分页。

1.默认分页您只需选择启用数据Web控件智能标记分页;但是,当您浏览页面时,虽然您只看到少量数据,但ObjectDataSource每次都会读取所有数据。

2.用户定义的分页通过仅从数据库中读取用户需要浏览的数据,性能得以提高。显然,这种方法需要你做更多的工作。

默认的分页功能非常有吸引力,因为您只需要选择一个复选框来完成它。但是它每次都读取所有的数据,不适合数据量大或者并发用户多的情况。在这种情况下,我们必须定制分页,使系统达到更好的性能。

自定义分页的关键点之一是编写只返回所需数据的查询语句。幸运的是,微软SQL Server 2005提供了一个新的关键字,通过它我们可以编写一个读取所需数据的查询。在本教程中,我们将学习如何使用微软SQL Server 2005的这个新关键字在GridView中实现自定义分页。自定义分页和默认分页的界面看起来是一样的,但是当你从一个页面翻到另一个页面的时候,效率就差了几个数量级。

请注意,自定义分页带来的性能提升方案取决于数据总量和数据库负载。在本教程的最后,我们将使用数据来说明自定义分页带来的性能优势。

步骤:了解定制分页的过程。

分页数据时,页面上显示的数据取决于请求的页面以及每页显示的项目数量。例如,假设我们将对81种产品进行分页,每页显示10个项目。当我们浏览第一页时,我们需要产品1到10。当我们浏览第二页时,我们需要产品11到20,以此类推。

有三个相关的变量:用于读取什么数据以及如何显示分页页面。

1.开始行索引页面上显示的第一行数据的索引;这个值可以通过将页面的索引乘以每页显示的记录数加1来获得。例如,如果一页显示10条数据,那么对于第一页(第一页的索引为0),第一行的索引为0 * 10 1,或者1;对于第二页(索引为1),第一行的索引为1 * 10 1,即11。

2.最大行数每页显示的最大记录数。它被称为“最大”行,因为最后一页显示的数据可能小于页面大小。例如,当81条记录每页显示10条记录时,最后一页,即第九页,只包含一条记录。任何页面上显示的记录数都不会超过最大行数。

3.记录总数显示数据的总数。不需要知道页面上显示的是什么数据,但是记录总数会影响分页。例如,如果81条产品记录被分页,每页10条记录,总页数将是9。

对于默认分页,起始行索引是通过在页索引和每页记录数上加1而获得的,最大行数是每页记录数。使用默认分页时,无论呈现哪一页数据,都要读取所有的数据,并且每一行的所有索引都是已知的,所以获取起始行索引是没有价值的。此外,记录的总数可以通过数据表的总数获得。

用户定义的分页仅返回从起始行索引开始的最大行数记录。这里有两点需要注意。

1.我们必须将要分页的整个数据与一个行索引相关联,以便从指定的开始行索引返回所需的数据。

2.我们需要提供用于分页的数据总数。

在接下来的两个步骤中,我们将编写与以上两点相关的SQL。此外,我们将在DAL和BLL完成相应的方法。

步骤:返回要分页的记录总数。

在我们学习如何返回显示页面所需的数据之前,让我们看一下如何获取数据的总数。因为配置接口时需要这些信息,所以我们使用SQL的COUNT聚合函数来实现。例如,要返回Products表中的记录总数,我们可以使用下面的语句:

从产品中选择计数(*)我们在DAL中添加了一个方法来返回该信息。这个方法叫做TotalNumberOfProducts(),它将执行上面的SQL语句。

打开App_Code/DAL文件夹,然后在设计器中右键单击ProductsTableAdapter并选择添加。

版权声明:ASP.NET 2.0中的操作数据25:提高大数据量中的分页效率是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。