用数据库实现分页

当某个Web区域中需要列出大量商品,通常有效的做法是让访问者分页浏览,每页预先确定显示的商品数量。
根据在架构的哪一层上执行分页来划分,主要有两种实现方法:
(1)在数据层分页:采用这种方法,数据库只返回访问者想要查看的那一页商品。
(2)在表示层分页:这种方法,数据层返回的是所需的所有商品列表,有表示层对象(如GridView)从这个完整的商品列表中获取所需的商品页。用这种方法处理结果集较大的应用时,有潜在的性能问题,因为它从数据库中向表示层传达了大量不需要的数据。

这里介绍使用SQL Server 2005的Row_NUMBER函数,来实现该功能。

Row_NUMBER函数将针对select语句返回的每一行,从1开始编号,赋予其连续的编号。需要专门指定一列用于预先排序以便于进行编号,这样查询的结果才能避免重复。

例:
1.从Product表中,按照ProductID的顺序,列出Name
select ROW_NUMBER() OVER (order by ProductID) as Row, Name
结果是行号和产品名
2.取出商品列表中的第6-10个
select Row,Name
from(select ROW_NUMBER() OVER (order by ProductID) as Row,Name
     from Product
     )as ProductsWithRowNumbers
   where Row>=6 and Row<=10


3.使用表变量实现
declare @Products TABLE
(RowNumber int,
 ProductID int,
 Name varchar(50),
 Description varchar(5000)
)

insert into @Projucts
select ROW_NUMBER() OVER (order by Product.ProductID) as Row,
      ProductID,Name,Description
from Product

select Name,Description from @Products
where RowNumber>6 and RowNumber<=10
)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值