DB2数据库更新数据缓慢,求优化建议

update (select row_number() over() as rownum,w.* from WE_EFFORT w where w.WORK_EFFORT_TYPE_ID='ACTIVITY') a set WORK_EFFORT_NAME=(select WORK_EFFORT_NAME from WE_EFFORT b where b.WORK_EFFORT_ID=a.WORK_EFFORT_PARENT_ID) where a.rownum between 1 and 10000

数据表中有110万条数据,每更新10000条就要半个小时左右,求优化建议

第1个回答  推荐于2021-01-10
你这样写很不好,看起来写的是一句sql,反而速度慢下来了。首先row_number() over() as rownum毫无必要,这样来分页效率不高。然后能不用*就不用*查询。在大数据量和列很多的情况下,会慢很多。

而且你也说了,更新1W条数据需要半个小时。那么可以采用存储过程或者程序来访问。这样会快很多,推荐采用存储过程,110W条数据,就算重建索引等,更新一条应该在200ms一下,一万条,不会那么久的。希望能帮助得到你。

你这样写sql语句,执行时间太久了,会造成假死现象,这样很不好。
第2个回答  2012-05-24
自查询+ 分析函数,不死才怪

考虑用存储过程吧,另外可以考虑适当去掉索引(如果存在索引的话)
相似回答