jfinal分页太慢

blob.png


詹总。分页这边一直很慢。页面等待差不多有1s多。我把那两句sql,一句是统计数据,一句是统计有数据便获取数据的sql,直接执行,显示的查询时间都是在几毫秒级别。分页显示的数据也十条左右,从数据库加载到内存读取,就算涉及到io传输,可怎么也用不到那么多时间吧??

这个问题不知道怎么解决。麻烦詹总批示一下。谢谢。

blob.png




直接抽出来在数据库中执行:(两句sql差不多都是这个时间)

blob.png


评论区

JFinal

2017-05-24 22:39

单步调试进入 paginate 方法,看哪一行代码明显慢了,即可立即找到原因

据推测是 sql 本来就慢了,你在控制台执行的 sql 很可能与 java 代码中的 sql 有很微妙的差别,例如:where 中使用的条件次序不同,造成没有用上索引

JFinal

2017-05-24 22:39

jfinal 仅仅只是将 sql 与其参数扔给 JDBC,理论上来说只要 JDBC 很快,那么查询一定很快

linuxea

2017-05-25 10:11

@JFinal 谢谢詹总

bu0.0gu

2017-05-26 13:54

可以试下把数据先放入redis 缓存里 在从缓存取 应该就好了 ,我这里数据在分页的时候也很慢 但我只用显示7天的 所以我把数据放入redis

linuxea

2017-05-26 14:04

@bu0.0gu 这是一个整体方案。不错,缓存是种解决方法。谢谢你的回答

chinazmg

2019-05-31 15:00

jfinal 分页查询时会将数据库所有记录查询出来(select * from),这个耗时较长,而一般通过数据库客户端查询时,会写select top 20 * from ,这个查询较快

JFinal

2019-05-31 21:44

@chinazmg select count(*) from 后面是有 where 条件的,快与慢取决于这个 where 是否是在索引上进行,以及数据量的规模

热门反馈

扫码入社