当前使用版本(必须填写清楚,否则不予处理)
2.3
重现步骤
每页size=10 分页到最后一页时,当数据不足10条,仍然使用limit offset,10查询的话,会导致查询速度变慢。
原因
因为如果符合条件的数据足够多,则limit1000的过程就是,从符合条件的第一条数据开始往后查,当查够1000条数据,则立刻返回。 如果符合条件的数据不够,则会从符合条件的第一条数据开始往后扫描,一条条的查,直到把整个表扫描完仍然不够1000条,才会返回结果(不够1000条)。
解决方法
- 重写Page类的getSize方法
@Override
public int getSize() {
long total = super.getTotal();
int size = super.getSize();
int offset = PageHelper.offsetCurrent(super.getCurrent(), size);
long remainRowSize = total - offset;
size = remainRowSize > size ? size : (int) remainRowSize;
return size;
}
- 以上是我的临时解决方法,不知道作者大大可不可以针对这个做个优化。或者有更好的解决方案,烦请指教
Comment From: amosnothing
这个问题有人跟进了吗?问题还在,还是说不处理呢