使用hibernate在5秒内插入11万条数据,你觉得可能吗?
需求是这样的,需要查询某几个表的数据,然后插入到另外一个表。
一看到需求,很多人都会用hibernate去把这些数据都查询出来,然后放到list中,
然后再用for循环之类的进行遍历,一条一条的取出数据对对象进行赋值,然后在调用dao层的save 方法进行保存对象。
hibernate保存一条数据是在35毫秒左右,咱们来计算下时间:
35*110000=3850000 毫秒
3850000/1000=3850秒
3850/60=64.1666666分钟,
如果咱们使用hibernate的话,那么要执行一个多小时,这根本就无法体现出效率了,而且这么大的数据,服务器的压力也不小。
好啦,上面说了这么多,咱们来看看实际的操作。
测试的数据库是MSSQL,MYSQL速度也是差不多的
我建立了一个表,表里有115546条数据。11万
然后我又建了了一个表,两个表结构完全不同。
我这里是直接使用sql语句进行数据插入,看代码:
insert into test(name) select s.address from Student s
使用了insert into select 语句,其实也就是相当于复制而已。
这时候,咱们就可以用hibernate来创建查询,执行改条sql语句了
这样的效率非常的高,我插入11万条数据,只用了5秒钟。而上面的方法却用时超过1个小时。
截图: