oracle如何插入blob数据_面试官:如何快速往表中插入1000W条数据

面试的时候老是会有这种问题,

面试官:你做过批量插入吗?

求职者:做过(心里想没做过那不是不想找过工作了)

面试官:如何往表中批量插入数据呢

求职者:mybatis saveBatch

面试官:有没有试过批量插入100W条数据

求职者:。。。

不废话,直接发建表语句和代码

CREATE TABLE `snowflake` (  `id` bigint(20) NOT NULL,  `name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
public void insert() {        Connection conn = null;        PreparedStatement ps = null;        try {            long start = System.currentTimeMillis();            // 建立连接            conn = SqlUtils.getConnection();            //设置事务为非自动提交            conn.setAutoCommit(false);            String sql = "insert into snowflake(id,name)values(?,?)";            ps = conn.prepareStatement(sql);            Snowflake snowflake = new Snowflake(0L, 0L);            for (int i = 1; i <= 10000000; i++) {                ps.setObject(1, snowflake.nextId());                ps.setObject(2, "name_" + snowflake.nextId());                // 添加执行sql                ps.addBatch();                if (i % 1000 == 0) {                    //执行batch                    ps.executeBatch();                    //清空batch                    ps.clearBatch();                }            }            //提交数据            conn.commit();            long end = System.currentTimeMillis();            System.out.println("花费的时间为:" + (end - start) / 1000 + "秒");        } catch (Exception e) {            e.printStackTrace();        } finally {            // 释放资源            SqlUtils.closeResource(conn, ps);        }    }

prepareStatement已经对SQL语句进行预编译,所以速度很快。

最主要的是设置事务为非自动提交,加速插入速度

1000W条数据我本机测试插入时间为

花费的时间为:100秒
69aab817a3b09571f4ef35ee31b245fc.png

不知道还有的优化的空间没

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值