4万多条数据,分页,每页取20条数据。用的MySQL+Hibernate。
每翻一页居然要两三秒!!!其中有where子句,发现满足条件的总结果数越多,翻页越慢。
非常想知道怎样提速。
服务器1G内存 AMD4000+, 这个规模的数据,达到多少秒算正常。
个人认为用hibernate自带的分页和mysql的limit效率差不多,都是每次取出20条数据,并非全部取出用程序处理。
传说mysql能自动优化,但你要是处理好执行顺序应该速度会快很多。
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果
每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过,你可以尽量让中间每次结果少一些。至于from和where内容的执行顺序我只知道Oracle的,不知道mysql的。
再有就是写好索引,也能提高效率。
为什么不使用 Mysql 的 limit 分页语句呢
你应该利用limit语句以减少mysql的返回量,而不是全部返回后通过程序过滤。