日韩亚洲欧美在线com|日本xxxx色视频在线播放|国产熟妇与子伦hd|欧美freesex黑人又粗又大|国产欧美日韩一区二区三区

不使用綁定變量而使用硬編碼是oracle性能問題的主要原因和可伸縮性的主要障礙
而且這種障礙是除了使用綁定變量以外很難改變的!

下面根據(jù)一個(gè)簡(jiǎn)單的試驗(yàn)來查看硬編碼與使用綁定變量對(duì)性能的影響:

在一個(gè)查詢中我們可以使用兩種方式:
比如查詢個(gè)人編號(hào):
select * from ac01 where aac001=123;
另外,也可以查詢:
select * from ac01 where aac001=:grbh;

在典型的系統(tǒng)中,查詢員工123 一次,可能以后也不會(huì)查詢,以后將查詢員工456,然后查詢員工789,等
對(duì)于這個(gè)查詢方式,我們看到,對(duì)于每一次的查詢來說都是新的查詢,即數(shù)據(jù)庫(kù)中沒有過的查詢。每次的查詢都要經(jīng)過分析、限定(名稱解析)、安全檢查、優(yōu)化等等,簡(jiǎn)單的說,執(zhí)行的每條語句在每次執(zhí)行時(shí)都將必須經(jīng)過編譯。這樣的結(jié)果會(huì)造成share pool,即SGA中的共享池迅速的填滿,而oracle不得不花費(fèi)大量的時(shí)間來整理,這也違背了share pool的設(shè)計(jì)思想。
然而,第二個(gè)查詢使用了綁定變量:grbh。查詢經(jīng)過一個(gè)編譯后,查詢方案存儲(chǔ)在共享池中,只保留這一個(gè)副本,可以用來檢索和重用。
在性能和可伸縮性方面,這兩者的差異是巨大的,甚至是驚人的。
看看這個(gè)例子:

SQL>  alter system flush shared_pool
  2  ;
System altered.
SQL> set timing on
SQL> declare
  2  type rc is ref cursor;
  3  l_rc rc;
  4  l_dummy all_objects.object_name%type;
  5  l_start number default dbms_utility.get_time;
  6  begin
  7     for i in 1..1000
  8     loop
  9             open l_rc for
10             'select object_name from all_objects where object_id ='||i;
11             fetch l_rc into l_dummy;
12             close l_rc;
13     end loop;
14     dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||
15     'seconds ..');
16  end;
17  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:11.09
注意,沒有使用綁定變量方式,花費(fèi)了11秒
SQL> declare
  2  type rc is ref cursor;
  3  l_rc rc;
  4  l_dummy all_objects.object_name%type;
  5  l_start number default dbms_utility.get_time;
  6  begin
  7     for i in 1..1000
  8     loop
  9             open l_rc for
10             'select object_name from all_objects where object_id=:x'
11             using i;
12             fetch l_rc into l_dummy;
13             close l_rc;
14     end loop;
15     dums_output.put_line
16     (round((dbms_utility.get_time-l_start)/100,2)||
17     'seconds..');
18  end;
19  /
        dums_output.put_line
        *
ERROR at line 15:
ORA-06550: line 15, column 2:
PLS-00201: identifier 'DUMS_OUTPUT.PUT_LINE' must be declared
ORA-06550: line 15, column 2:
PL/SQL: Statement ignored

Elapsed: 00:00:00.08
SQL> edit
Wrote file afiedt.buf
  1  declare
  2  type rc is ref cursor;
  3  l_rc rc;
  4  l_dummy all_objects.object_name%type;
  5  l_start number default dbms_utility.get_time;
  6  begin
  7     for i in 1..1000
  8     loop
  9             open l_rc for
10             'select object_name from all_objects where object_id=:x'
11             using i;
12             fetch l_rc into l_dummy;
13             close l_rc;
14     end loop;
15     dbms_output.put_line
16     (round((dbms_utility.get_time-l_start)/100,2)||
17     'seconds..');
18* end;
SQL> /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.18
而使用綁定變量的方式,只用了不到一秒的時(shí)間!

 

主站蜘蛛池模板: 国产又黄又爽又猛免费视频播放 | 欧美成年黄网站色视频| 日韩aⅴ人妻无码一区二区| 中文字幕精品视频在线看免费| 中文字幕无码乱人伦免费| √天堂8资源中文在线| 久久97精品久久久久久久不卡| 国产精品一区二区三区视频免费| 亚洲娇小与黑人巨大交| 欧美精品自拍偷拍一区| 亚洲忘忧草久久一区| 国产午夜无码片在线观看影| 日韩欧美人妻一区二区三区| 欧美浓毛大泬视频| 欧美三级a做爰在线观看| 国产午夜精品一区二区| 免费无遮挡禁18污污网站| 毛片视频免费一区二区三区| 大伊香蕉精品视频在线直播| 成人免费777777被爆出| 国产成a人片在线观看视频下载| 精品无码专区久久久水蜜桃| 大屁股丰满女人一区二区| 精品偷拍被偷拍在线观看| 日本激情一区二区| 无码av在线一本无码| 夜夜添无码一区二区三区| 97se亚洲国产综合自在线| 中文字幕亚洲欧美日韩2019| 女被啪到深处喷水gif动态图| 国产又爽又大又黄a片| 妺妺窝人体色www在线小说| 丰满妇女毛茸茸刮毛| 亚洲国模精品一区二区三区| 国产 国语对白 露脸| 福利姬液液酱喷水| 国产内射爽爽大片视频社区在线| 亚洲国产a∨无码中文777| a∨天堂亚洲区无码先锋影音| 18禁止看的免费污网站| 一日本道伊人久久综合影|