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 子句,所以顺序是由数据库引擎任意分配的。
我们的数据库中有 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 子句,所以顺序是由数据库引擎任意分配的。