mongo大數據量查詢優化


mongo in查詢數量較多時

 

 

時間對比:

4W條數據查詢速度達到3-4S

優化后可以達到0.1S-0.2S

 

優化原理:mongo自動Bean轉化功能性能較差,改用原生mongo游標方法讀取MongoDB數據文檔,並在內存中做bean轉化

 

優化前

Query query = new Query();

queryAfter.addCriteria(Criteria.where("id").in(idList));
queryAfter.addCriteria(Criteria.where("time").gte(startTime).lte(endTime));
List<TestEntity> lists = mongoTemplate.find(queryBefore,TestEntity.class);

 優化后

DBObject query1 = new BasicDBObject(); //setup the query criteria 設置查詢條件
 query1.put("id", new BasicDBObject("$in", idList));
 query1.put("time", (new BasicDBObject("$gte", startTime)).append("$lte", endTime));
 DBCursor dbCursor =mongoTemplate.getCollection("testEntity").find(query1);
 List<TestEntity> list=new ArrayList<>();
 while (dbCursor.hasNext()){
 DBObject object=dbCursor.next();
 TestEntity te=new TestEntity();
 te.setId(object.get("_id").toString());
 te.setTime((Date) object.get("time"));
 list.add(te); 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM