测试前首先在系统管理员帐户下执行"alter system flush shared_pool;"命令,清空共享池以免影响测试结果。
1、使用硬编码:
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for i in 1..1000
loop
open l_rc for
'select object_name
from all_objects
where object_id='||i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
(round((dbms_utility.get_time-l_start)/100,2)||
'seconds...');
end;
执行结果:50.06seconds...
2、使用绑定变量:
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for i in 1..1000
loop
open l_rc for
'select object_name
from all_objects
where object_id=:x'
using i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
(round((dbms_utility.get_time-l_start)/100,2)||
'seconds...');
end;
执行结果:1.02seconds...
2、什么是并行控制,它意味着什么。