数据库中怎么限制提交的条数?

比如我在oracle执行一个提交的语句,但是时间太长了,怎么在语句里限制提交的条数?例如语句是updaetable_1aseta.aa=(selectb.aafromta... 比如我在oracle执行一个提交的语句,但是时间太长了,怎么在语句里限制提交的条数?

例如语句是

updae table_1 a set a.aa=(select b.aa from table_2 b where a.id=b.id)
where a.id in (select c.id from table_2 c) and trim(a.aa) is null;
commit;
例如上面的语句,假设table_2里有20万条的数据,一次插入肯定很慢,并且卡,不知道哪辈子才更新好,怎么样限制更新的条数,例如每1000条更新一次
展开
 我来答
南凌公
2015-01-09 · TA获得超过104个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:129万
展开全部
这个要使用批量游标插入
我给你简单改写一下,你参考一下

declare
Type Type_AA Is Table Of table_2.aa%Type Index By Binary_Integer;
a_Type_AA Type_AA ;
cursor cur_ALL is select b.aa from table_1 a,table_2 b where a.id=b.id;

begin

open cur_ALL;
loop
fetch cur_ALL Bulk Collect Into a_Type_AA limit 1000;
forall i in 1..a_Type_AA.count
updae table_1 a set a.aa=a_Type_AA(i) where a.id in (select c.id from table_2 c) and trim(a.aa) is null;
commit;
exit when cur_ALL%notfound or cur_ALL%notfound is null;
end loop;
close cur_ALL;
exception
when others then
if cur_ALL%isopen then

close cur_ALL;

end if;

end;

这样每次只会更新1000条,而且是批量插入,没插入1000条更新一次
但是我建议你的sql要优化一下where a.id in (select c.id from table_2 c)这部分相当影响性能。
onedaymeetyou
2015-01-09 · 人生即是等待..等待...
onedaymeetyou
采纳数:96 获赞数:250

向TA提问 私信TA
展开全部
参考 oracle 分页
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式