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. Codeforces 348 D - Turtles Lindström–Gessel–Viennot lemma

    #include<bits/stdc++.h> using namespace std; #define y1 y11 #define fi first #define se second ...

  2. Python 'takes exactly 1 argument (2 given)' Python error

    Python,定义urlConfig 接收参数,正常传递参数时,出现,多给了一个参数的错误问题, 定义class的函数之后,在调用的时候出现“'takes exactly 1 argument (2 ...

  3. 神经网络(3)---如何表示hypothesis,如何表示我们的model

    大脑中的神经元 我们的大脑都充满了上图所示的神经元,神经元有一个细胞体(cell body),还有一些input wires,专业词汇叫做树突(dendrite),它们从其它地方接收输入信息,神经元还 ...

  4. Jquery Ajax跨域访问

    一.同源策略 二.跨域的集中方法: 1.服务器端发送请求,服务器作为中继代理(此方法不理解) 2.iframe 3.script标签 通过动过动态生成script标签,并将src指向目标源的方式(im ...

  5. <c:set> 标签

    <c:set> 标签 JSP 标准标签库 <c:set>标签用于设置变量值和对象属性. <c:set>标签就是<jsp:setProperty>行为标签 ...

  6. guava字符串工具--------Joiner 根据给定的分隔符把字符串连接到一起

    public class JoinerTest { public static void main(String args[]){ //1.将list字符串集合,以,形式转为字符串 List<S ...

  7. javascript权威指南第11章 DOM扩展

    //javascript 权威指南 第三版 第11章 DOM扩展 //取得body元素 var body = document.querySelector("body"); //取 ...

  8. MySQL服务优化参数设置参考

    l 通用类: key_buffer_size 含义:用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写). 影响:对于MyISAM表的影响不是很大,MyISAM会使用系统的缓存来存储 ...

  9. html表格按长度换行

    <table style="table-layout:fixed; WORD-BREAK: break-all; WORD-WRAP: break-word; width:200px; ...

  10. snmp_trap/snmptt

    Zabbix Snmp Trap 配置 1. Zabbix Server 操作 1.1 Snmp Trap 安装配置 yum install -y net-snmp net-snmp-utils vi ...