chenwch的gravatar头像
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;
    }

 


打赏

已有1人打赏

丶附耳聆听的gravatar头像
最近浏览
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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友