今天翻了一下《oracle 9i&10g的编程艺术》,第一章的第三节提到了使用绑定变量提高性能。

对比下面两段SQL

create or replace procedure proc1
as
begin
for i in 1 .. 10000
loop
execute immediate
'insert into t values ( :x )' using i;
end loop;
end;

create or replace procedure proc2
as
begin
for i in 1 .. 10000
loop
execute immediate
'insert into t values ('||i||')'
end loop;
end;

以上是用Procdure来描述的,前提是有个空表

create table t(x int)

插入一万条数据的对比结果可以在PL/SQL中看到时间对比。

proc1仅仅只有proc2的1/12。

可以看到,如果使用了绑定变量(后面称为绑定变量方法),则只有4 次硬解析;没有使用绑定变量
时(后面称为无绑定变量方法),却有不下 10 000 次的硬解析(每次插入都会带来一次硬解析)。还可以
看到,无绑定变量方法所用的闩数是绑定变量方法的两倍之多------书中原文

posted on 2009-03-27 13:30 湘江夜游神 阅读(161) 评论(0)  编辑  收藏 所属分类: Oracle学习

只有注册用户登录后才能发表评论。


网站导航:
 

Locations of visitors to this page