hibernate 表内复制数据 优化记录

记录一下

sql优化,在业务逻辑不变的情况下,主要就是减少io,减少查询次数

添加6000条数据

使用for循环,一次添加一条,sql如下

String sql = "insert into user_tree select ?, ?, name, parent_id, previous_id, carNum, type from "
                + "user_tree where user_id = ? and alias_id = ?";
this.hibernate.bulkUpdateSQL(sql, new Object[]{new_uid, alias_id, old_uid, alias_id});

耗时大概为30s, 效率较低

如果降低查询次数,是否会提高效率,改用下面的方法

String sql = "insert into user_tree select ?, alias_id, name, parent_id, previous_id, carNum, type from "
                + "user_tree where user_id = ? and alias_id in(?,?,?)";
this.hibernate.bulkUpdateSQL(sql, new Object[]{new_uid, old_uid, alias_id1,alias_id2,alias_id3});

结果,效率更低先把可能需要的数据都先查出来,再在内存中生成数据,使用hibernate插入数据

select ut.* from user u where u.user_id = ? and alias is not null

this.hibernate.saveall();

耗时约为6s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值