数据量太大,一次性更新处理,会有日志文件太小(事务日志)、临时表空间不够用等问题。
采用分批次更新。
<update id="messageDonetime" >
UPDATE
(
select * from TMP_MESSAGE t where t.DONETIME IS NULL
fetch first #value# rows only
)
SET DONETIME=OUTTIME
</update>
但是ibatis不能够将fetch first #value# rows only解析对,具体原因不知道,望赐教。
后改用类似oracle的rownum处理
UPDATE
(
select * from
(
select t.*, ROW_NUMBER() OVER() as ROW_NUM
from TMP_MESSAGE t where t.DONETIME IS NULL
) as w
where w.ROW_NUM <= #dealNum#
)
SET DONETIME=OUTTIME
但是又带来新的问题,处理速度太慢,估计是最里面的select语句的原因
最后还是用fetch first,不再从外面传值
<update id="messageDonetime" >
UPDATE
(
select * from TMP_MESSAGE t where t.DONETIME IS NULL
fetch first 5000 rows only
)
SET DONETIME=OUTTIME
</update>
分享到:
相关推荐
最近遇到需要批量update数据的问题,一开始用了一个for循环去update,数据量大的时候效率很低。...遇到大批数据更新的时候,效率就可想而知了。在google上找了一遍,发现ibatis里有对批量update的支持,挺好的东西。
ibatis学习 ibatis总结 ibatis ibatis ibatis
Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...
ibatis入门与ibatis迭代的用法
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
spring与ibatis整合集成实例 spring与ibatis整合集成实例
ibatis demo,ibatis例子,ibatis示例
iBATIS 级联iBATIS 级联iBATIS 级联
spring3.2与Ibatis整合,在servlet中获取bean
ibatis 增删改查(DB2版本),用其他数据库的话,直接把配置文件改一下就可以了。WEBROOT下面有建表sql语句
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
ibatis
描述与iBatis相关技术与数据库进行增删改查操作
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册
ibatis与spring 框架整合
《iBATIS实战》的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。 编辑推荐 《iBATIS实战》既可为广大的开发...
ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成
ibatis api,ibatis文档,ibatis说明文档