alter table paysys_acnt_first_login_gatway nologging;(PS:其实这里的 nologging是不起作用的)
alter session enable parallel dml;
update /*+ parallel(t1,4) */ paysys_acnt_first_login_gatway t1
set province_id =
(select province_id
from paysys_account_login_log t2
where t1.account_id = t2.account_id
and t1.gateway_id = t2.gateway_id
and t1.login_date = t2.login_date);
偶最开始的做法是用的上述办法,之所以没有使用下面的关联UPDATE,是因为分析了它与上述两个的执行计划,但从计划看上边无论从Cost,Cardinality 还是Bytes都优于关联UPDATE
update (select /*+ bypass_ujvc */
t1.province_id old_id, t2.province_id new_id
from paysys_acnt_first_login_gatway t1,
paysys_account_login_log t2
where t1.account_id = t2.account_id
and t1.gateway_id = t2.gateway_id
and t1.login_date = t2.login_date) r
set r.old_id = r.new_id;
alter session enable parallel dml;
update /*+ parallel(t1,4) */ paysys_acnt_first_login_gatway t1
set province_id =
(select province_id
from paysys_account_login_log t2
where t1.account_id = t2.account_id
and t1.gateway_id = t2.gateway_id
and t1.login_date = t2.login_date);
偶最开始的做法是用的上述办法,之所以没有使用下面的关联UPDATE,是因为分析了它与上述两个的执行计划,但从计划看上边无论从Cost,Cardinality 还是Bytes都优于关联UPDATE
update (select /*+ bypass_ujvc */
t1.province_id old_id, t2.province_id new_id
from paysys_acnt_first_login_gatway t1,
paysys_account_login_log t2
where t1.account_id = t2.account_id
and t1.gateway_id = t2.gateway_id
and t1.login_date = t2.login_date) r
set r.old_id = r.new_id;