Mongo查询百万级数据  使用分页  skip和limit 效率会相当慢   那么怎么解决呢  上代码

全部查询数据也会特别慢

Criteria criteria = new Criteria();
List<Criteria> params = new ArrayList<>();
params.add(Criteria.where("is_deleted").is(0));
params.add(Criteria.where("is_pop").is(0));
Criteria[] cArr = new Criteria[params.size()];
criteria.andOperator(params.toArray(cArr));
Query query1 = new Query(criteria);
Sort.Order order = new Sort.Order(Sort.Direction.ASC, "_id");
int size = 2000;
int page = 0;
List<AreaSsuPriceMongoEntity> all = new ArrayList<>();
while (true) {
List<AreaSsuPriceMongoEntity> entities = areaSsuPriceMongoDao.findList(query1, order, 0, size);
if (CollectionUtils.isEmpty(entities)) {
break;
}
all.addAll(entities);
Criteria criteria2 = new Criteria();
String id = entities.get(entities.size() - 1).getId();
ObjectId objectId = new ObjectId(id);
if (params.size() > 2) {
params.remove(params.size() - 1);
}
params.add(Criteria.where("_id").gt(objectId));
Criteria[] cArr2 = new Criteria[params.size()];
criteria2.andOperator(params.toArray(cArr2));
query1 = new Query(criteria2);
} java List 性能问题
List.removeAll 在大数据量的情况下 效率会特别低 包括 remove 尤其是 ArrayList
怎么解决 不使用ArrayList 或者重新记录不需要删除的数据存入list java 百万级数据 * 百万级数据遍历 效率是否高效?
可以分组处理... 查询大数据量时 不可以直接全部查询 一定要分页查询 循环查出然后addAll处理
查mongo 及 mysql 都是必要的 insert and update 数据库时 一定要批量处理
不可以循环一条一条处理 效率特别低 数据量大的时候update数据时不可以全部一次性update
一定要分批 分页处理 sublist 一次多少条

Mongo查询百万级数据性能问题及JAVA优化问题的更多相关文章

  1. EF查询百万级数据的性能测试--多表连接复杂查询

    相关文章:EF查询百万级数据的性能测试--单表查询 一.起因  上次做的是EF百万级数据的单表查询,总结了一下,在200w以下的数据量的情况(Sql Server 2012),EF是可以使用,但是由于 ...

  2. EF查询百万级数据的性能测试

    一.起因  个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...

  3. EF查询百万级数据的性能测试--单表查询

    一.起因  个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...

  4. Mybatis 使用分页查询亿级数据 性能问题 DB使用ORACLE

    一般用到了mybatis框架分页就不用自己写了 直接用RowBounds对象就可以实现,但这个性能确实很低 今天我用到10w级得数据分页查询,到后面几页就迭代了很慢 用于记录 1.10万级数据如下 [ ...

  5. Sql Server分页分段查询百万级数据四种项目实例

    实际项目中需要实现自定义分页,最关键第一步就是写分页SQL语句,要求语句效率要高. 那么本文的一个查询示例是查询第100000-100050条记录,即每页50条的结果集.查询的表名为infoTab,且 ...

  6. SQL Server 百万级数据提高查询速度的方法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  7. SQL 百万级数据提高查询速度的方法

    ----------------[转] 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 ...

  8. SQL Server 百万级数据提高查询速度的方法(转)

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...

随机推荐

  1. python requests包的基本使用

    Requests 安装requests模块: D:\Install\Python36>pip3 install requests 请求方式 #coding:utf-8 import reques ...

  2. 能ping通Linux但是ssh连不上问题解决方法

    问题:能ping通Linux服务器 但是ssh连不上  <Linux redhat AS4 版本> 解决方法这个问题花了我20分钟去查资料,网上写的解决方法也是五花八门,不过,总算解决了, ...

  3. NOI2008 志愿者招募 (费用流)

    题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至 ...

  4. Airtest真机链接(一)

    确认ADB是否能够正常连接到手机 windows系统下: 用USB线连好手机后,进入AirtestIDE文件夹,在 AirtestIDE_2019-05-09_py3_win64/airtest/co ...

  5. javascript权威指南第12章DOM2 DOM3 示例代码

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Example XHTML ...

  6. php面向对象之$this->用法简述

    在成员方法中,调用成员方法的方法是对象名加方法名,格式就是“对象名->方法名”.但是在定义类的时候,我们往往不知道对象名是什么,所以就没法用对象名,这时,我们就要用到伪变量$this. 什么是$ ...

  7. PHP 连接MySQL

    连接MySQL 在我们访问MySQL数据库前,我们需要先连接到数据库服务器: 实例(MySQLi - 面向对象) <?php $servername = "localhost" ...

  8. 22 | MySQL有哪些“饮鸩止渴”提高性能的方法?

    不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内.临时性地提升一些性能. 我以前做业务护航的时候,就偶尔会碰上这种场景.用户的开发负责人 ...

  9. RabbitMQ的5种模式

    队列截图,去rabbitMq.com去找学习文档 =========================================================================== ...

  10. asp.net文件夹上传源码

    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...