解决mongodb大数据量分页查询效率问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heihu_malice7/article/details/78958916

最常见的分页采用的是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;
    }


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页