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日


