今天翻了一下《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 次的硬解析(每次插入都會帶來一次硬解析)。還可以
看到,無綁定變量方法所用的閂數是綁定變量方法的兩倍之多------書中原文