hibernate select limit(0,10000) 越来越慢

xiabibo 发布于 2011/10/24 10:26
阅读 1K+
收藏 0

hibernate select limit(0,10000) 越来越慢:

每查询1w条删除它,然后在从0,10000查询出来删除,越查越慢。是在一个事物中。

加载中
0
鉴客
鉴客
删除大数据量是这样的,隔几千条就提交一下吧。
0
xiabibo
xiabibo

引用来自“鉴客”的答案

删除大数据量是这样的,隔几千条就提交一下吧。
我试试
0
xiabibo
xiabibo

spring 事物配置在service层,有没有什么方法能手动提交事物,在方法没执行完成的时候。

xiabibo
xiabibo
你的意思是,让我单独写个,jdbc连接数据库删除吗?
红薯
红薯
你是为了删数据,就别考虑那么多设计模式的东西了:)
0
高少爷
高少爷

有毛病啦,不要的数据,还查个什么劲?

直接写 delete 语句,带上你的 where 条件不就完了,非得用 hibernate 去 find 或者 get 一个 object 回来,再用 object 对象,执行 delete ?

完全就是 hibernate API 使用给你带来的思维上的误区。

0
xiabibo
xiabibo

引用来自“高少爷”的答案

有毛病啦,不要的数据,还查个什么劲?

直接写 delete 语句,带上你的 where 条件不就完了,非得用 hibernate 去 find 或者 get 一个 object 回来,再用 object 对象,执行 delete ?

完全就是 hibernate API 使用给你带来的思维上的误区。

删除的这部分数据,是要保存到另外一张表的。
0
Sam_yi
Sam_yi

如果你是Oracle  还是走 PLSQL 比较好 

 

0
刘柳
刘柳
用存储过程把,hibernate调用存储过程
0
眯会
眯会

引用来自“虫☌☌☌兒☌”的答案

引用来自“高少爷”的答案

有毛病啦,不要的数据,还查个什么劲?

直接写 delete 语句,带上你的 where 条件不就完了,非得用 hibernate 去 find 或者 get 一个 object 回来,再用 object 对象,执行 delete ?

完全就是 hibernate API 使用给你带来的思维上的误区。

删除的这部分数据,是要保存到另外一张表的。
可以使用insert into table1(id,name) select id,name from table2语句啊,插入完毕之后,把原来的表不要的数据清理掉。
0
xiabibo
xiabibo

因为业务需要,必须得先查出来,做些处理然后转移,删除。能不能说一下造成limit 0,10000 越查越慢的原因呢,我是这么想的,可能是10000条查出来然后删除,由于事物没提交在从0条开始查10000条时其实是从10000条开始查limit(10000,10000)这样的话就越查越慢了,但是事物怎么手动提交用不知道怎么解决,spring配置事物在service层,只有当service走完才会提交事物,我想在service没走完时提交可能就行了。!!!!!不知道怎么提交

0
JFinal
JFinal
用 Hibnerate 查出来再删,肯定慢,Hibernate查出来的数据首先要填充到model中去滴。还不如直接用sql,一般插入一边删除。
返回顶部
顶部