搜课云网 > 上海内威培训 > 资讯总汇 > SQL Server 与Access数据库相关分页技术

SQL Server 与Access数据库相关分页技术

机构:上海内威培训 时间:2016-01-27 08:50:08 点击:806

  当数据库中的数据量很大时,一般从数据库中获取数据列表时,要求进行分页显示,尤其是在网络中.

  经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。现在流行的分页方法一般是检索页面大小的块区的数据,而非检索所有的数据,然后单步执行当前行。

  1.第一种,利用top 及not in进行分页。

  select top @PageSize * from TableName where [PK] not in(select top @RecordStart [pk] from jobs ) order by pk asc/desc。

  @PageSize是每一页显示的条数。

  TableName是要求分页的表或者视图,PK是一个唯一字段。

  @RecordStart 是记录开始的位置.根据每一页多少条,与第几页,算出来的.具体算法一般为:@RecordStart=PageSize*(PageNums-1)。

  该分页算法有以下主要问题,如果用非主键字段(或者非唯一字段)排序,再进行分页时,导致取出来的数据不正确。并且效率不高。

  2. 第二种,利用top 及top子句来进行分页。

  select top @PageSize * from ( select top @totalRecord-@startpos * from tablename order by [pk]desc,@sortfield )order by a.@sortfield

  @PageSize是每一页的记录数。

  @totalRecord是总记录数,

  @startPos 是记录开始的数。比如说第2页,每一页20条就是20*(2-1)。

  @pk,表或者视图的主键。

  @sortField要求进行排序的字段。

  该算法是对第一种算法进行改进。可以对非唯一字段进行排序,但是要求每一次都给出表的主键。主键是固定的,在数据量大时,缺点也是效果不够高。

  了解更多关于数据库方面的知识,请访问上海数据库培训学校

师资介绍