我有5800万条记录,其中有30列,其中我希望通过与另一个具有两列四千五百万记录的表进行映射来更新一列。更新查询两个巨大的表之间的单个列
MERGE INTO /*+ PARALLEL(tbl_temp) */ tbl_temp tcm
USING (SELECT frn.id, frn.risk FROM temp_new frn) a
ON (a.id = tcm.fi_id) WHEN MATCHED THEN UPDATE
SET tcm.risk_label=a.risk;
上面是查询,我已经尝试过,但它需要超过12小时。我已经尝试批量更新也与批量大小10000但同样的问题。是否有任何其他方式来提高查询的性能
提示追随第一个关键字('merge','insert','select'等)。 –
通常,当你使用'MERGE'而只有'WHEN MATCHED THEN UPDATE'子句时,那么一个简单的'UPDATE'就足够了。你有'ID'和'FI_ID'上的索引吗?表TBL_TEMP是否已分区?如果不是,那么PARALLEL提示没有多大意义。 –
@WernfriedDomscheit,是的,我们在指定的列上有索引,并且表没有分区。 – TSKSwamy