让优化个查询, 简单的查询语句,前台查询超时,数据库查询秒出,count了一下 1900多万数据. 看了下后台日志,发现是分页的问题. 用的PageHelper的分页插件, 发现拼接的sql :
SELECT *
FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID
FROM (select *
from table
) TMP_PAGE)
WHERE
ROW_ID <= 25 AND ROW_ID > 0;
数据库跑4分钟 代码跑8分钟
简单修改了一下
select *
from (select ROWNUM ROW_ID, *,
from table
WHERE ROWNUM <= 25) as TMP_PAGE
WHERE TMP_PAGE.ROW_ID > 0;
运行 不到1秒 .
新问题:
1,PageHelper: getPageSql() 方法拼接sql 没敢改. …
只能重新查询条数,实现简单的分页.
留个记录,以后研究好PageHelper 再完善吧
2, 查询最后一页的时候,效率并没有提高,跟原sql执行原理相同
3,不能使用order by