chenwch
2017-12-29 21:10:55
解决mongodb大数据量分页查询效率问题
最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,只能力不从心,skip如果跳过大量的数据会很慢,针对这一情况,可以通过条件查询+排序+限制返回记录,即 边查询,边排序,排序之后,抽取上一页中的最后一条记录,作为当前分页的查询条件,从而避免了skip效率低下的问题。代码如下:
/** * 大数据量排序方式分页获取数据 * @param lastId 上一页的最大id * @param collectionName 表名 * @param totalCon 查询条件汇总 * @param fields 输出指定字段 */ public DBCursor getPageList(int page, int pageSize,String collectionName,BasicDBObject totalCon,BasicDBObject fields) { try { return mongoTemplate.getCollection(collectionName).find(totalCon,fields).sort(new BasicDBObject("_id", 1)).limit(pageSize); } catch (Exception e) { LoggerUtils.error(getClass(), "***大数据量数据分页查询失败,collectionName=" + collectionName, e); } return null; }
评论

fk1984316 LV2
2021年11月29日
zhangtiwei LV3
2021年10月19日
baqqioku LV3
2021年7月6日
bubbles123 LV1
2021年6月11日
水光浮藻 LV6
2021年4月12日
crazyda LV2
2020年9月23日
ruzsyi LV1
2020年8月24日
kun050330228 LV2
2020年7月28日
862896568 LV2
2020年5月22日
kinggode LV14
2019年12月11日