您的位置:首页 > 其它

ROWID更新提升UPDATE性能,不能用merge时

2015-03-19 16:53 330 查看
declare

  maxrows      number default 100000;

  row_id_table dbms_sql.urowid_table;

  --currcount_table dbms_sql.number_Table;

  object_name_table dbms_sql.varchar2_Table;

  cursor cur_b is

    SELECT /*+ index(a) use_hash(a,b) index(b) */

     a.object_name, b.ROWID ROW_ID

      FROM A, B

     WHERE A.object_id = B.object_id

     ORDER BY B.ROWID;

  v_counter number;

begin

  v_counter := 0;

  open cur_b;

  loop

    EXIT WHEN cur_b%NOTFOUND;

    FETCH cur_b bulk collect

      into object_name_table, row_id_table limit maxrows;

    forall i in 1 .. row_id_table.count

      update b

         set object_name = object_name_table(i)

       where rowid = row_id_table(i);

    commit;

  end loop;

end;

/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: