需要使用空格更新表中所有行的字段。 该表有大约100万条记录。请尽可能以最短的处理时间提供最好的方法。 感谢
答案 0 :(得分:1)
什么版本和平台?我看到了一个COBOL标记,所以我假设DB2 for z / OS或DB2 for IBM i。
我很难相信卸载/重装,如上所述在任何平台上都是最好的。因为它只涉及I / O的两倍作为简单更新。
在DB2 for IBM i(又名AS / 400,iSeries)上......我知道卸载/重新加载不会更快。以下内容适用于DB2 for i。
1)简单UPDATE MYTBL SET MYCOL = ' ' WITH NC;
...只要文件 NOT 记录,或者您可以关闭该表的日记记录足够长的时间来运行更新。在旧的,有点小的515运行7.1,我可以在13秒内更新400K行。我希望在不到35秒的时间内更新1M。
2)如果您绝对无法停止日志记录,那么您的下一个最快的方法是使用COBOL或RPG记录级别访问(RLA又称本机I / O)。确保您在到达顺序中阅读表格,并在承诺控制下打开它。您还需要在X个记录之后提交更改。其中X = 128KB /(行的大小)向下舍入。
另一个考虑因素是您要更新的列是否用于索引或键控逻辑。您不希望系统更新每个记录更新的访问路径。如果是索引,则最简单的方法是删除索引并在更新文件后重建索引。如果是逻辑,则可以在更新之前使用RMVM删除该成员,并在使用ADDLFM进行更新后重新添加该成员。
答案 1 :(得分:0)
使用update命令会花费大量时间和CPU成本。最好的方法是卸载文件中的所有数据。使用cobol程序更新字段的值 使用LOAD REPLACE加载数据。
注意 - >请在此之前备份表格数据