当前位置: 移动技术网 > IT编程>数据库>Mysql > Mysql通过分页查询处理百万条数据(单线程)

Mysql通过分页查询处理百万条数据(单线程)

2020年07月30日  | 移动技术网IT编程  | 我要评论
Mysql查询百万数据:(亲测!!! 数据迁移,800万数据,先查询后添加,三个半小时完成)查询方法如下: /** * 查询 * * @param args */ public static void main(String[] args) throws Exception { int count = 8540934;//通过count查到数据总量 int num = 10000;//每次查询的条数 //

Mysql查询百万数据:
(亲测!!! 数据迁移,800万数据,先查询后添加,三个半小时完成)
查询方法如下:

 /**
     * 查询
     *
     * @param args
     */
    public static void main(String[] args) throws Exception {
        int count = 8540934;//通过count查到数据总量
        int num = 10000;//每次查询的条数
        //需要查询的次数
        int times = count / num;
        if (count % num != 0) {
            times = times + 1;
        }
        //开始查询的行数
        int bindex = 0;
        ArrayList<Quequan_xinyang> list = new ArrayList<Quequan_xinyang>();
        for (int i = 0; i < times; i++) {
            long l = System.currentTimeMillis();//获取时间戳
            
            //通过分页查询进行大数据处理
            String sql = "select * from quequan_xinyang where DKBM>=(select DKBM from quequan_xinyang order by DKBM limit "+bindex+",1) limit "+num+"";
            try {
				//每循环一次都进行数据库连接,释放内存,提高效率
				Connection conn = MysqlDBUtil.getConnection();
				conn.setAutoCommit(false);//关闭事务,改为手动操作
				Statement state = conn.createStatement();
                // 执行Sql,得到结果集
                ResultSet rs = state.executeQuery(sql);
                while (rs.next()) {
                    Quequan_xinyang zjd = new Quequan_xinyang();
                    zjd.setYsdm(rs.getString("ysdm"));
                    zjd.setDkbm(rs.getString("dkbm"));
                    zjd.setDkmc(rs.getString("dkmc"));
                    zjd.setSyqxz(rs.getString("syqxz"));
                    zjd.setDkbzxx(rs.getString("dkbzxx"));
                    zjd.setZjrxm(rs.getString("zjrxm"));
                    zjd.setScmjm(rs.getDouble("scmjm"));
                    zjd.setScmj(rs.getDouble("scmj"));
                    zjd.setBsm(rs.getInt("bsm"));
                    zjd.setSj_geometry(rs.getString("sj_geometry"));
                    list.add(zjd);
                }
                mysqladd(list);//执行list的方法,比如把数据添加到另一张表上
                list.clear();//清空list,防止溢出
                conn.commit();
                rs.close();
				state.close();
				conn.close();
				// 使用后关闭连接
				DBUtil.closeConnection();
            } catch (Exception e) {
                e.printStackTrace();
            }
            bindex = bindex + num;//定义下一次查询行数

            long l1 = System.currentTimeMillis();//计算时间
            System.out.println(l1 - l);
        }
        
        System.out.println("结束");
    }

本文地址:https://blog.csdn.net/weixin_45498999/article/details/107669254

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网