微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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代码简洁多了.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐