近期遇到一个问题,商品表新增了一个逻辑删除字段,分页查询时该字段为1则不返回。所以SQL要新增一个where来进行判断。但是这导致了分页查询变得很慢。
解决方法:
关闭count统计。因为开启了总记录数的时候,执行某条查询时,率先会执行SELECT COUNT(0) FROM xxxTable
来统计总记录数。如果语句还有条件,那么生成的就是SELECT COUNT(0) FROM xxxTable WHERE ...
。当满足条件的记录非常多的时候,比如逻辑删除字段的判断,可能有几百万条,这就会导致即使使用了分页查询,但是这条率先执行的统计总列数的查询语句是不会分页的,依然执行非常慢。
PageHelper.start(pageNum,pageSize,false);