SQLServer2000的分页办法

本文介绍了使用 SQL Server 实现分页查询的方法,并提供了一个实用的 SQL 示例。文章还讨论了如何根据不同页面调整查询参数,确保数据正确加载。此外,提到了在 Java 应用中使用 Hibernate 框架时 SQL Server 的性能问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实使用Java的话,一般是不会考虑使用sqlservler的数据库的,但是有时候还是会用到的,我年初的时候,做过办公室OA系统,说实话,系统做的很差劲,尤其财务管理那块,一直没好的解决办法。 另外数据库分页我就考虑了整整一天,

略微从网上找了些资料,但是有些不对,或者显示某些页面时出现问题,比如数据重复问题,尤其是点击最后一页时,出现问题更多。

       开始时,我读取最后一页和其他页分开写,但是总感觉麻烦,于是总结规律,发现还是能够一起写的。

下面是基本语句:

select * from (   select TOP 2 * FROM ( SELECT TOP 6 * from dbo.o1_progstate  ORDER BY pst_id ASC ) as t1 ORDER BY pst_id DESC ) as t1   ORDER BY pst_id ASC;

 

上面的2(绿色的)就是代表我从哪个记录开始取,而6(黄色的)就是代表分页大小。

不过需要到最后一页是判断,因为分页时一般会读取记录数,那么也就知道了总页数,因此,可以判断当前是否在读最后一页,如果是,就把绿色的考虑成:总记录数%页面大小 (取余数)就可以了。

变量pageNum 当前页码  pageSize 页面大小  recordCount总记录数 pageCount总页数

6处使用pageSize不用变化。

2处 如果不是最后页:(pageNum - 1)×pageSize

    if(pageNum == pageCount)的话 就取 recordCount%pageSize

自己使用下来,每个页面显示都很正常,没发现什么问题。

 

不过hibernate等映射框架下sqlserver2000,是假分页,这严重影响了程序性能,使用Java尤其映射框架时最好别用sqlserver2000,2005好像就支持真分页了。所谓的假分页就是,比如读第2000到2100的记录,但实际上是读了2100个记录然后在内存中在分离到了2000到2100个,这肯定影响性能的。

总之,微软的sqlserver数据库并发能力确实不高,自己在数据库方面很肤浅,但感觉着它没有MYSQL和oracle的性能好。这个感觉可能太主观,如遇高手,如果有时间的话,希望给初学者指点下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值