自己可以试一下insert的速度,是不是比较慢?
解决方案 »
- oracle创建一个表的语句应该写在哪里呀?
- 第一次见到的like用法,大家说说其效率如何
- ★★★★★著名美国投资银行招IT Technical Team Leader★★★★★
- ORACLE高级问题
- 怎么进入SQL*PLUS?
- 求教:我想用oracle的序列创建160200401111,其中2004为年份,会变化,01111也是变化的,想寻求好的方法
- 请教使用.net连接oracle数据库的问题
- 如何在存储过程中insert的时候,把数据库中相应的表锁住,让别的数据写不了
- oracle 在win2000中只能装在administrator里吗?
- 求大神给看下,数据库经常down找不到原因
- 一个过程执行时提示对象不存在了,可查看都好好的。
- 急!sql分类查询合计横排,请教高手!
fetch c_source_new into vv_rowvalue;
end loop;
close c_source_new;
else
dbms_output.put_line(v_old_customer_id||';'||v_new_customer_id);
--null;
end if;
fetch c_source into v_rowvalue;
end loop;
close c_source;
我想最能影响速度的应该是你insert时候的写的函数了.把它贴出来看看.相信几万条数据只要几分钟,那要半个小时.太夸张了.
绝非不用游标好
可能是瓶颈。
把调用的函数中的SQL语句贴出来看看分析一下。
function sf_switch_status(p_hidden in number)
return number
is
v_status number(1);
begin
if p_hidden=1 then
v_status:=0;
elsif p_hidden=0 then
v_status:=1;
else
v_status:=0;
end if;
return v_status;
end sf_switch_status;
open c_source;
fetch c_source into v_rowvalue;
while c_source%found loop
这中方式打开我真的没有见过,要不用下面两种方式打开,都可以啊.
for v_rowvalue in c_source loop
. ...
end loopopen c_source;
loop
fetch c_source into v_rowvalue;
exit when c_source%notfound; .....
end loop;
close c_source;速度可以提高90%喔,先看看速度,有问题再说.
open c_source;
fetch c_source into v_rowvalue;
while c_source%found loop
我是用while循环来提取游标,没什么错语呀,你怎么会没见过呢!!
致于是不是while循环的效率比for和和loop... end loop底,书上我倒没见到过,不过我还是试试看先!!