分页的算法问题,能否提高效率(非SQL)

06-10-06 junglesong
大家对分页都很熟悉了,我上个项目是这样分页的,大家看看整个过程是否有潜力可挖.

基本记录分 Id,title,concept三项,用户可以对它们进行组合查询(非SQL)取得数据并排序,我的处理过程如下.:

1.按查询条件取得所有数据.

2.对这些数据进行排序.

3.取出前20条并显示,取得页数显示在分页栏上.

对第二步和第三步我感觉有潜力可挖,如果采取较好的数据结构和Cache的话也许没有那么多事,大家在这方面有没有经验,我们探讨一下.

         

banq
2006-10-08 09:09
》如果采取较好的数据结构和Cache的话

是的,如果有好的算法,可以在应用服务器内存中实现,不必使用数据库的算法,但是好像有点重新发明轮子的嫌疑,数据库已经提供了稳定可靠的数据算法排序,直接使用就可以。

而且在内存中进行数据排序,容易破坏业务层的面向对象特征,虽然可以分担数据库一部分负载,但是设计意义不大。

按照Evans DDD的领域建模想法,这部分也是通过数据库查询实现的。

junglesong
2006-10-08 10:47
banq大哥,假设没有数据库Sql的帮助,怎么写这个分页呢?对于海量数据,是否应该有比Sql更快的办法?

我现在的构想是插入记录时就是有序的,三个字段都排一下,这样可以把查询的压力分散倒Insert/Update/Delete中去.

banq
2006-10-10 10:55
>对于海量数据,是否应该有比Sql更快的办法

应该是的,这就象做搜索引擎了。

如果你还依赖数据库,那么读写缓存+SQL是一个成本不高的中间解决方案。

你之前说的在内存中进行排序等算法,这个我也思考过,好像很难实现。

这又类似做全文检索了。

junglesong
2006-10-11 23:58
谢谢回答,受教了,先用读写缓存+SQL方案吧,有什么想法再向您讨教。

猜你喜欢