DB2 - Ingest vs Update



在DB2上工作时,我有两个表:

TABLE_A>

2列:CLAIM_ID、CODEID_A

TABLE_B>

2列:CLAIM_ID、CODEID_B

目标是编写一个DB2Update语句,检查TABLE_a的CLAIM_ID是否与TABLE_B的CLAM_ID相同,然后用CODEID_B(TABLE_B的CLAIM-ID(替换CODEID_a(TABLE_a的那个CLAIM_IID(。

TABLE_A和TABLE_B都有大约4亿行。VSch是架构名称。

发现相关的子查询应该工作:

UPDATE MY_SCHEMA.TABLE_A apc SET CODEID_A = (SELECT TABLE_B.CODEID_B FROM SCHEMA_2.TABLE_B TABLE_B 
WHERE TABLE_B.CLAIM_ID = apc.CLAIM_ID)
WHERE EXISTS (SELECT 1 FROM SCHEMA_2.TABLE_B TABLE_B WHERE (TABLE_B.CLAIM_ID = apc.CLAIM_ID));

以下是两个表(表A和表B(中的列结构和索引的详细信息:https://codeshare.io/armxAv

我的问题是,如果我们在这里使用Ingest而不是Update,会更快吗

如果我们通过DB2Ingest路由,我们可以首先DB2将要更新的值列表从TABLE_B提取到一个FLAT文件中,然后从该FLAT文件到TABLE_a中执行DB2INGEST。


就时间复杂性而言,这是一种有效的方法吗?如果是,有人能帮我查询同样的Ingest吗?

您也可以考虑使用MERGE语句

MERGE INTO tablea a 
USING (SELECT claimsid_b, codeid_b FROM tableb) b 
ON (a.claimsid_a = b.claimsid_b) 
WHEN MATCHED THEN  
UPDATE SET 
a.codeid_a = b.codeid_b 

PS。未测试,直接在此处键入。。但你有这个想法。。。

最新更新