SQL> alter session set sql_trace=true;会话已更改。已用时间: 00: 00: 00.28
SQL> begin
2 for i in 1 .. 200000 loop
3 insert into t (x) values (i);
4 end loop;
5 end;
6 /PL/SQL 过程已成功完成。已用时间: 00: 00: 54.00
SQL> select count(*) from t; COUNT(*)
----------
200000已用时间: 00: 00: 00.18
SQL> begin
2 -- v_str := 'insert into t(x) values(:temp)';
3 for i in 1 .. 200000 loop
4 execute immediate 'insert into t(x) values(:temp)'
5 using i;
6 end loop;
7 end;
8 /PL/SQL 过程已成功完成。已用时间: 00: 01: 03.39
SQL> alter session set sql_trace=false;会话已更改。已用时间: 00: 00: 00.01
SQL>--------------------
其中表T有一个NUMBER型字段X。
请问:
第一个存储过程有没有使用绑定变量?
若没有使用,为什么使用绑定变量的反而比未使用绑定变量的速度要慢?
若使用了,请问绑定变量有没有一个具体书写的形式?
SQL> begin
2 for i in 1 .. 200000 loop
3 insert into t (x) values (i);
4 end loop;
5 end;
6 /PL/SQL 过程已成功完成。已用时间: 00: 00: 54.00
SQL> select count(*) from t; COUNT(*)
----------
200000已用时间: 00: 00: 00.18
SQL> begin
2 -- v_str := 'insert into t(x) values(:temp)';
3 for i in 1 .. 200000 loop
4 execute immediate 'insert into t(x) values(:temp)'
5 using i;
6 end loop;
7 end;
8 /PL/SQL 过程已成功完成。已用时间: 00: 01: 03.39
SQL> alter session set sql_trace=false;会话已更改。已用时间: 00: 00: 00.01
SQL>--------------------
其中表T有一个NUMBER型字段X。
请问:
第一个存储过程有没有使用绑定变量?
若没有使用,为什么使用绑定变量的反而比未使用绑定变量的速度要慢?
若使用了,请问绑定变量有没有一个具体书写的形式?
若使用,具体形式见:execute immediate 'insert into t(x) values(:temp)'
5 using i;
:temp就是一个绑定变量速度变是当然的,要解析变量并给变量传值
循环解析这句话是很慢的。
---------------------------------------
点当前页,右上角管理,可以加分。