DB2 批量更新需要很长时间

DB2 bulk update take long time

我们的数据库中有 300 万条记录。我们需要通过删除第一个字母 0 来更新具有相同邮政编码列的邮政编码列。

identifyno,addresstypecode 是地址 table 中的复合主列。

我们使用了下面的查询300次(300*10000=3000000)

更新db2inst1.address SET postalcode = SUBSTR(postalcode,2) WHERE (identifyno,addresstypecode) IN (SELECT identifyno,addresstypecode FROM db2inst1.address WHERE countrycode= 'IN' AND SUBSTR(postalcode,1,1)='0' 仅获取前 10000 行); 提交;

执行时间很长(将近 1 天)。

请帮助我提高查询性能。

我认为问题在于您的查询两次触及相同的 table。您可以将其简化为:

UPDATE db2inst1.address 
SET postalcode = SUBSTR(postalcode,2) 
WHERE countrycode='IN' AND SUBSTR(postalcode,1,1)='0'

我不明白你为什么只更新前 1000 条记录,特别是因为你没有 ORDER BY 子句,所以顺序是由数据库引擎任意分配的。