当前位置: 代码迷 >> Oracle开发 >> 软解析和硬解析的有关问题
  详细解决方案

软解析和硬解析的有关问题

热度:109   发布时间:2016-04-24 08:01:43.0
软解析和硬解析的问题
今天在看一本oracle的书,说到软解析会比硬解析效率更高,并且差别比较大,但是我分别用两段sql测试了下,并没有什么区别,反而结果显示硬解析的效率稍微高一点点。。。,下面是我用的例子;
--硬解析
declare 
begin
for kk in 1 .. 10000 loop
insert into zhb_test_1 (str1) values (kk);
end loop;
end;

--软解析
declare 
v_str varchar2(10);
begin
for kk in 1 .. 10000 loop
execute immediate 'insert into zhb_test_1 (str1) values (:v_str)'using kk;

/*execute immediate 'insert into zhb_test_1 (str1) values ('|| kk||')';
*/end loop;
end;

我试着把10000这个数字改成50000和100000,但是结果并不是我想像的那样随着数量的增多而体现软解析的优势,那么到底是什么原因呢 ?

------解决方案--------------------
楼主的比较方式有误,动态SQL的效率无法同直接SQL相比,
应该写成这样,比较试试看
SQL code
--硬解析DECLAREBEGIN  FOR kk IN 1 .. 10000 LOOP    EXECUTE IMMEDIATE 'INSERT INTO zhb_test_1 (str1) VALUES (''' || kk || ''')';  END LOOP;END;--软解析DECLARE  v_str VARCHAR2(10);BEGIN  FOR kk IN 1 .. 10000 LOOP    EXECUTE IMMEDIATE 'insert into zhb_test_1 (str1) values (:v_str)'      USING kk;  END LOOP;END;
  相关解决方案