锁定老帖子 主题:小论分页方案
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-19
没看懂
|
|
返回顶楼 | |
发表时间:2007-06-20
heyujava 写道 没看懂
看来你可能习惯于复杂的东西。 那我简单解释一下 PageResult pageResult = new PageResult(Account._, null, null, 100); 是调用构造函数: @ param selectPropNames- null 表示list所有属性。 @ param condition- null表示没有条件,也就是list所有的记录。 PageResult(String objectName, List<String> selectPropNames, Condition condition, int pageSize) 这个构造函数能看懂把。 这个构造函数会根据你输入的参数初始化PageResult实例。 举例说,你有一个account对象(表),你的应用程序里有根据性别list account的业务,但只list "id", "name"属性。每页200条记录,那相应的代码就是。 PageResult pageResult = new PageResult("Account", Arrays.asList("id", "name"), eq("sex", "male"), 200); 剩下工作,就是PageResult把你做了,你根本不需要去过问那些无需你关心的事,例如,怎么分页?怎么取记录?怎么优化性能?怎么cache page?怎么释放cache到但长时间不用的page,等等。 PageResult是多线程安全的。 |
|
返回顶楼 | |
发表时间:2007-06-20
raykcn 写道 这是方案 ?
想把算法卖给大家 ? 小孩子真聪明! 买给你,有钱吗? |
|
返回顶楼 | |
发表时间:2007-06-20
ddandyy 写道 我倒是测过oracle的sql拿指定行
在1W行以前是有很大差别的 越靠前速度越快 过1W行之后 速度几乎都是一样的了 我想你们做法也许需要商榷 |
|
返回顶楼 | |
发表时间:2007-06-20
啊......
忘了说了 不是src时间 是指单纯的sql语句时间 单纯的sql语句就没有什么做法了吧 另外对你这个结果很疑惑 不知道能说明什么 你应该给出你从第一页开始 一直翻到最后一页 用了多长时间 每一页都用了多长时间 另外分页这种东西 最有影响的还是数据库 sql语句写得怎么样 index设置的怎么样 等等等等 src这边 大体上差距不是很明显 |
|
返回顶楼 | |
发表时间:2007-06-20
ddandyy 写道 啊......
忘了说了 不是src时间 是指单纯的sql语句时间 单纯的sql语句就没有什么做法了吧 另外对你这个结果很疑惑 不知道能说明什么 你应该给出你从第一页开始 一直翻到最后一页 用了多长时间 每一页都用了多长时间 另外分页这种东西 最有影响的还是数据库 sql语句写得怎么样 index设置的怎么样 等等等等 src这边 大体上差距不是很明显 我想自己是对的: >> 我想你们做法也许需要商榷 有象你这样做分页的吗? 首先你要明白你面对的是人还是机器? 如果你面对的是人,通常的关于分页的界面是: 第一页,上一页,下一页,最后一页 做的好点可能会“跳转” 第一页,上一页,下一页,最后一页,跳到【】页 象那些搜索引擎google,百度之类,他们通常只cache到前面100到200页(我估计最多这么页),因为很少人很少的时候翻查记录超过一定的页数(例如5页或10页),并且它们不可能提供跳转页面功能,例如查询结果是1亿,他不可能让你跳转到第10,000页,或20,0000页。 至于你说的从第一页翻到最后一页,如果页面大的话,那纯粹是搞笑。 |
|
返回顶楼 | |
发表时间:2007-06-20
看上面的票数 应该能说明点什么吧(我没投)
另外对你cache的做法可以理解 不过这个应该是和业务有关的 不是适合所有情况 如果查询条件很多 且经常变更怎么办 |
|
返回顶楼 | |
发表时间:2007-06-20
ddandyy 写道 看上面的票数 应该能说明点什么吧(我没投)
另外对你cache的做法可以理解 不过这个应该是和业务有关的 不是适合所有情况 如果查询条件很多 且经常变更怎么办 呵呵,还是第一次注意到什么票数!在您提醒下。 至于你说的页面很多或经常更新的问题,就不想和你们谈论,就当你ok了。 忘记了一个重要的前提:我这里讨论的是那些大结果集分页的问题,至于那些万条记录一下,100页之下的记录,不在这里讨论范围内,可能上面PageResult的参数:Condition会带来误会,不是叫你任何时候都用,PageResult只用在一些特定的页面list(例如list一个什么表所有的记录,通常一般的程序都有这样的业务,跟据表的个数和大小来决定,来决定是否用PageResult)。 |
|
返回顶楼 | |
发表时间:2007-06-20
我想你是没明白意思
每页1000条 10页就能翻到1W条了 1000条一页不过分吧 最少我们现在这个项目就有 有时候翻个 20-30页应该是很正常的 最少我经常在google翻这么多 我承认一般用到的都是前面几条 前面几条的速度也确实不慢 我上面的结果也放出来了 关键就是翻到后面的时候速度怎么 你不能说只有很少人翻过去就不考虑这方面 有一些做法越往后翻速度越慢 而且是几何级别的 |
|
返回顶楼 | |
发表时间:2007-06-20
另外我想你误会了一个事 我没说你的做法不好 只是质疑了一下你的TEST结果 想要你的另一种结果而已 在看到TEST结果之前 谁也不知道好坏的
如果有人买 说是要你这种结果 你能不给么 当然 如果你说我不买 没有义务给我这个结果 那当然也是完全可以的 |
|
返回顶楼 | |