欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-14 14:23:51
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