我是一个SQL的初学者
今天听人说"绑定变量"能够提高sql的效率
哪位大虾能解释一下"绑定变量"的含义吗(最好举一个简单的例子),
为何能提高效率呢
好感激阿

解决方案 »

  1.   

    http://community.csdn.net//Expert/TopicView2.asp?id=4283367&datebasetype=now
      

  2.   

    在循环中使用绑定变量可以提高性能的
    使用绑定变量可以减少Oracle对语句的硬分析,加快语句的执行
    在实际中没用过绑定变量,学习!
    最简单的例子:
    ...
    iServiceID number;
    begin
      ...
      select * from service where ServiceID = iServiceID;
      ...
    end;在实际应用中,这些都需要注意的ColinGan(浪子)说的是静态绑定,我找了个动态绑定的例子
    declare 
      l_number number;
    begin
      for i in 1..10000
      loop 
        l_number:=dbms_random.random;
        execute immediate 'insert into t values(:x1,:x2,:x3,:x4)' using l_number,l_number,l_number,i;
      end loop;
      commit;
    end;我在处理一次数据导入的循环代码中,
          sql_str := ('update '||v_tblname||' t2 set a'||v_colnum||' = (:1)  where t2.datatime = (:2)');    
           execute immediate sql_str using v_ei2(i),v_starttime;:1  处是具体数值,:2处是具体时间。在没有用binding的时候,执行一天的数据需要3个半小时左右,使用绑定变量的写法,运行时间缩短到10分钟左右。—— 因为通过数据库监控软件,我发现共享池报警,出现效率瓶颈的在于过多重复的解析 'update '||v_tblname||' t2 set a'||v_colnum||' = (:1)  where t2.datatime = (:2)  这个语句—— 用绑定之后,就避免重复解析问题了。