数据查询 常见的4种分页方法

常见的4种分页方法:
1)控件分页,主要工作在前台【软翻页】
后台一次性返回所有数据都交给前台的VO,前台利用类似DataGrid这样的控件,一次性显示一部分,实现分页功能

2)服务层分页,主要工作在后台【软翻页】
前台的查询请求,原样提交给持久层,持久层返回所有结果,服务层保持所有结果,并选择性的反馈给前台其中一页。
前台再发来翻页请求时,不必再向持久层请求查询,而直接从保持的结果中返回其他内容即可。

3)持久层软分页,主要工作在后台【软翻页】
和2的原理类似,但是这次缓存的工作由持久层框架来负责。服务层第一次访问持久层时,持久层对数据库做全件检索,但只给服务层返回第一页的数据。从第二页开始,服务层再对持久层提出请求时,持久层不必再做数据库访问,而直接从缓存中将数据提供给服务层。

4)持久层硬分页,主要工作在后台【硬翻页】
无论你实用什么持久层工具,总之复写它的SQL执行函数,要根据不同数据库实现使用不同的方言。
说白了就是重新拼写SQL文字符串,使SQL文在不改变原有用意的基础上,加上记录条数选择的功能
如:select top 100 from tab; (SqlServer) ,这个 top 100 就是从Bean中的pageSize之类的控制属性取得并拼到SQL文中的

4种方式各有优缺点,各自有不同的实用场景。前3种都是“软翻页”,最后一种是“硬翻页”
1)优点:一次性访问服务器。一次耗时,之后的翻页非常之快
缺点:第一次耗时非常高;且由于数据量的问题,不适用于大规模数据查询;数据实时性不高

2)优点:较之第1种,首次查询耗时大为减少(因为网络传输量大为下降)
缺点:首次耗费在服务器端的查询时间仍然不少;由于数据一次性查出保存在服务层,所以数据的实时性不高

3)基本同2,但由于有些持久层框架已经具备了很好的缓存软翻页功能,使服务层代码的编写不必再多考虑翻页的问题了。

4)优点:查询速度最快;查询的结果实时性最好
缺点:根据不同的数据库所支持的分页查询语法,某些数据库(如Oracle)当查询到倒数几页时,时间耗费几乎与第2种相同;
由于高实时性,可能造成用户在翻页时,漏看数据(如:每页显示100条,用户看第一页时,第101条数据在第二页,所以看不到。在此用打开第一页到翻页到第二页的这段时间里,其他用户删除了前100条数据中的任一一条,此用户看第2页时,刚才的第101条数据现在是第100条了,所以它在第一页而不在第二页,这就导致了此用户漏看数据。有点像论坛顶帖子:)

对于一般商业开发来说,通常在第3和第4种中选择一种。总体来说第4种应该是比较好的选择,优点大于缺点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值