在处理 DB2 时,我有 2 个表:
表_A >
2 列:CLAIM_ID、CODEID_A
表_B >
2 列:CLAIM_ID、CODEID_B
目标是编写一个 DB2 Update 语句,检查 TABLE_A 的 CLAIM_ID 是否与 TABLE_B 的 CLAIM_ID 相同,然后将 CODEID_A(TABLE_A 的 CLAIM_ID)替换为 CODEID_B(TABLE_B 的 CLAIM_ID)。
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));
这是两个表中的列结构和索引的详细信息 - TableA 和 TableB: https ://codeshare.io/armxAv
我的问题是,如果我们在这里使用 Ingest 而不是 Update,那会更快吗?
如果我们通过 DB2 Ingest 路径,我们可以首先 DB2 从 TABLE_B 中提取要更新的值列表到 FLAT 文件中,然后从该 FLAT 文件中执行 DB2 INGEST 到 TABLE_A 中。
就时间复杂度而言,这会是一种有效的方法吗?如果是,有人可以帮助我处理相同的摄取查询吗?