jfinal分页是不是内存分页

B_B_Q 发布于 2013/09/26 08:41
阅读 641
收藏 2

@JFinal 你好,想跟你请教个问题:

jfinal中paginate分页是不是内存中数据的分页,先把所有数据的结果集全部放在内存中,然后再分页提取。还是需要多少数据就从数据库取多少数据,下次翻页的时候再取,而不是一下子查出来放到内存。

因为数据量大的时候出现很长的延时,小的时候感觉不出来,我猜想会不会是上述情况的前者。

加载中
0
JFinal
JFinal
必须是利用数据库分页的,要不性能太低
JFinal
JFinal
回复 @B_B_Q : 调试跟踪一下源代码,能很清楚看到 list的size 是多少就知道不是将几百万数放内存了
JFinal
JFinal
回复 @B_B_Q : 你没仔细看源码,jfinal分页只会将需要的数据放内存。几百万的数据分页,如果没做好索引,造成全表扫描,肯定也会慢的
B_B_Q
B_B_Q
试了一下,百万级的数据量,paginate 的速度非常慢,4百万的数据直接就出不来。看了一下源码,jfianl貌似把百万的数据一次放到list中的,再根据page参数分页的。
0
如梦技术
如梦技术
尝试加上cache试试!
0
B_B_Q
B_B_Q

引用来自“JFinal”的答案

必须是利用数据库分页的,要不性能太低
哦,我再看看
0
黄开源中国
黄开源中国

就算你的数据库分页也是先查询再进行分页传输。换言之如果你表中有500万条数据,你执行一个全表检索的语句。。他涉及的行数是几百万。。当然了。几百万如果是单表其实也很快。最怕那种表连接。加上笛卡尔积,随时都是几百万XN的增长。。最好explain分析你的sql语句。。。

0
u
uuhui
通过查看jfinal的源码,jfinal的分页面通过根据需要多少数据就 取多少数据,下次翻页的时候再取,而不是一下子查出来放到内存。jfinal 通过Dialect abstract类的forPaginate方法来实现分页的。针对不同的数据库,jfinal 通过不同的实现类来继承Dialect 类,去实现不同的分页方法。
0
景颢
景颢
感觉orm功能太简单了
返回顶部
顶部