DB2批量更新需要很长时间

时间:2017-09-08 04:21:24

标签: database performance db2 database-performance

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

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

我们使用以下查询300次(300 * 10000 = 3000000)

UPDATE 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' FETCH FIRST仅10000行); 提交;

执行需要很长时间(差不多1天)。

请帮助我改进查询的效果。

1 个答案:

答案 0 :(得分:1)

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

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

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