MySQL Hibernate分页效率问题

4万多条数据,分页,每页取20条数据。用的MySQL+Hibernate。
每翻一页居然要两三秒!!!其中有where子句,发现满足条件的总结果数越多,翻页越慢。
非常想知道怎样提速。
服务器1G内存 AMD4000+, 这个规模的数据,达到多少秒算正常。

代码如下:http://code.google.com/p/virtual-judge/source/browse/trunk/judge/src/judge/action/ProblemAction.java?r=95#309

个人认为用hibernate自带的分页和mysql的limit效率差不多,都是每次取出20条数据,并非全部取出用程序处理。
传说mysql能自动优化,但你要是处理好执行顺序应该速度会快很多。

开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果

每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过,你可以尽量让中间每次结果少一些。至于from和where内容的执行顺序我只知道Oracle的,不知道mysql的。
再有就是写好索引,也能提高效率。

为什么不使用 Mysql 的 limit 分页语句呢

你应该利用limit语句以减少mysql的返回量,而不是全部返回后通过程序过滤。