关于分页问题(ZT)

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

这个问题的本质是,如何从一个查询中返回按某种顺序排列的特定位置的数据。

从目前的解决办法来看,有几种类型:

1、利用服务器端游标,这个在Web程序中非常不可取。消耗的资源很大,很轻易把服务器搞死。非凡对一些数据量很大的查询更是如此。分页只是减少了返回的数据量,但是服务器端还是查询了所有的数据,还要保持对数据库的连接,数据库的资源还是被消耗了。

2、利用嵌套的sql来查询某一页的数据。这个办法可以不用服务器端游标,但是仍然消耗了很多数据库的资源。非凡是在访问页码比较大的页面的时候。页码越大,消耗资源越多。Hibernate就是用的这种办法。

3、用缓存查询的主键的办法来查询。就是一次查一页的数据,下次查主键大于第一页的主键的办法来查询。这个办法对于顺序访问非常好,速度很快,但是跳页的时候不适合。而且,要知道查询结果的总条数,必须select count,有时候,select count也是很耗资源的。微软的解决方案是推荐这种方法的。

4、折衷组合以上办法。

其实,微软的断开式数据集对于提高服务器性能还是大有好处的。使用Java,也可以用同样的思路,搞一套只用快速只进游标的查询类库和断开连接的数据容器。

要害,还是要做好分页问题。

更新的效率,其实并不是很重要(当然,数据库结构要合理),查询的效率,始终是个大问题。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航