解决方案 »

  1.   

    貌似这种更新可以用merge  into 语法
      

  2.   


    -- 1.检查 table_01 上没有TR ,如果有,再不影响业务的情况下,可以考虑禁用,更新完了再启用。
     alter table table_01 disable all triggers;
     alter table table_01 enable all triggers;2.在table_02 表的 member_id 列,建一个IX。
    create index ix_table_02_m on table_02(member_id)3.你要更新 3 列,这个语句更新了 1 列,其实一个语句可以直接更新多列。
    update table_01 set(col1 , col2,col3) = (select c1, c2,c3 from y where table_01.member_id = member_id)
    where exists(select * from table_02 where table_01.member_id = member_id)
    and .......
      

  3.   

    大家好,谢谢回应,
    不过我更新三列,用三个语句是因为col1 用些用户有,有些没,
    col2用些用户有,有些没,
    col3用些用户有,有些没,所以小弟分三次来进行。小弟在网上巡查过,利用 “parallel” 来提高效率。
    请问可以吗?请赐教。
    谢谢。
      

  4.   

    Parallel用途
    强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用parallel说明,就会多核同时工作,来提高效率。但本身启动这个功能,也是要消耗资源与性能的。所有,一般都会在返回记录数大于100万时使用,效果也会比较明显。