SqlServer数据库分页获取数据

 

由于最近准备面试,所以把以前的零散的知识点整理一下.由于不经常用怕忘记,万一面试时丢分岂不可惜. 

数据库分页有好多种,网上也有多种例子.在实际开发中我更偏向使用Top分页法.我觉得这也是来的最直接最简单的方法之一.

前几天看到一位网友写的在内存中缓存数据的方法来提高分页的效率,比如先取出前100页的数据放内存中,取数据的时候100页以内的数据就直接从内存中提取了,超过100页的数据就再读取101~200页的数据放内存中.我没有这样做过,也不知道会带来什么样的问题.当然他写的比我描述的详细的多.但我觉得这也是一个法子,有时间去研究一下. 

SqlServer2000(V8)Sqlserver2005(V9)的分页语句原理是一样的,只是在实现过程中有一点差别.V8由于变量无法直接在语句中使用,所以只好用拼接字符串来解决了.

V8中的分页存储过程

页索引@PageIndex 是从1开始的整数,而不是从零开始.今天写这段代码的时候,讲语句写成set @sql = N'

select top '+(@PageSize)+' * from Employees where EmployeeID not in

(select top '+((@PageIndex-1) * @PageSize)+' EmployeeID from Employees order by EmployeeID)'

老提示我出错说: nvarchar ' select top ' 转换为数据类型为int 的列时发生语法错误。调试好久也没解决,最后找到以前写的代码才知道,少写了一个str()方法. 

V9中的分页存储过程

同样页索引@PageIndex 是从1开始的整数.很明显V9的代码简洁多了.

其实每次看到调用这样的分页语句我的心里就很担心,因为每点击一次 下一页数据库将进行一次 干活” .数据库会很累的.我想数据量小的话直接用控件(有些带分页功能的)自身的分页方法了,不然有点得不偿失的感觉.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值