我有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