需求: BI_PERSON_INFO 数据 108万,ID为主键 idcard唯一
PHYSICAL_EXAM_RECORD 数据 19万 , idcard不唯一
两表关联:PHYSICAL_EXAM_RECORD与BI_PERSON_INFO为多对一,通过idcard关联, PHYSICAL_EXAM_RECORD.PERSON_ID 更新为BI_PERSON_INFO.ID
方案一:
update PHYSICAL_EXAM_RECORD per set per.PERSON_ID=(select bpi.ID from BI_PERSON_INFO bpi where per.IDCARD = bpi.IDCARD)
注释:普通做法,但因数据量太大,卡死,不可行。
方案二:
MERGE INTO PHYSICAL_EXAM_RECORD per USING BI_PERSON_INFO bpi ON ( per.idcard = bpi.idcard ) WHEN MATCHED THEN UPDATE SET per.person_id = bpi.id
注释:该sql时间短,4s。
数据迁移 关联表跟新字段 MERGE INTO