Oracle中绑定变量的简单性能测试

 
都是向一个表里面插入1000条数据。

create table t(x int);

带参数的存储过程
create or replace procedure proc1
 as
 begin
 for i in 1 .. 1000
 loop
 execute immediate
 'insert into t values(:x)' using i;
 end loop;
 end;
/
不带参数的存储过程
create or replace procedure proc2
 as
  begin
    for i in 1 .. 1000
    loop
      execute immediate
      'insert into t values('||i||')';
    end loop;
  end;


运行看看结果:

SQL> exec proc2;

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.40
SQL> exec proc1;

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.03
SQL> exec proc2;

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.23
SQL> exec proc1;

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.01
SQL>


结论
使用带参数的SQL,性能比不带参数的高10-20倍。也许没有这么悬殊,但差距绝对应该是很明显的。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页