也是300万数据的一张表:
--只游标定义一列
declare
cursor cur_3 is select a.cert_type from ea_cust.cust_info a;
type t_table is table of varchar2(100);
c_table t_table;
to_cust_id varchar2(100);
begin
open cur_3;
loop
fetch cur_3 bulk collect into c_table limit 100;
exit when c_table.count = 0;
for i in c_table.first..c_table.last loop
null;
end loop;
end loop;
commit;
end;
--耗时13秒
--游标整张表
declare
cursor cur_3 is select * from ea_cust.cust_info a;
type t_table is table of ea_cust.cust_info%rowtype;
c_table t_table;
to_cust_id varchar2(100);
begin
open cur_3;
loop
fetch cur_3 bulk collect into c_table limit 100;
exit when c_table.count = 0;
for i in c_table.first..c_table.last loop
null;
end loop;
end loop;
commit;
end;
--耗时63秒
可想而知游标的列越多,数据量越大,游标打开的越慢
本文通过示例展示了Oracle中游标定义的列数对性能的影响。当游标只包含一列时,打开耗时13秒;而包含整张表的所有列时,耗时增加到63秒。这表明游标定义的列越少,打开速度越快,建议在可以的情况下仅选择必要的列来提高效率。
174万+

被折叠的 条评论
为什么被折叠?



