请高手帮忙优化一下,update速度好慢啊.thanks

hutiefeng9847 2006-04-10 10:53:44
define acct_item_t=acct_item_t_0603;
define serv_addr=serv_addr_0401;
DECLARE
CURSOR S_CUR IS select * From &acct_item_t where exch_id='0';
S S_CUR%ROWTYPE;
i number;
BEGIN
OPEN S_CUR;
LOOP
FETCH S_CUR INTO S;
EXIT WHEN S_CUR%NOTFOUND;
begin
begin
select distinct exch_id into i from &serv_addr
where serv_id=s.serv_id;
EXCEPTION
WHEN OTHERS THEN
i:=1;
end;
update &acct_item_t set exch_id=i where serv_id=s.serv_id;
commit;
EXCEPTION
WHEN OTHERS THEN
null;
end;
END LOOP;
CLOSE S_CUR;
END;
/
...全文
231 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanoul 2006-04-11
  • 打赏
  • 举报
回复
如果update的字段exch_id存在索引,则先去掉索引,完成全部数据之后,重建索引
bugchen888 2006-04-11
  • 打赏
  • 举报
回复
UPDATE &acct_item_t t
SET exch_id=(SELECT exch_id FROM &serv_addr a WHERE a.serv_id=t.serv_id)
WHERE t.exch_id='0'
AND t.serv_id IN (SELECT serv_id FROM &serv_addr)

UPDATE &acct_item_t
SET exch_id=1
WHERE t.exch_id='0'
AND t.serv_id NOT IN (SELECT serv_id FROM &serv_addr)
Renkey 2006-04-11
  • 打赏
  • 举报
回复
对 exch_id建立一个索引.
qiaozhiwei 2006-04-10
  • 打赏
  • 举报
回复
最好不要用cursor,用cursor很影响效率

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧