資源描述:
《oracle綁定變量及舉例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1.什么是綁定變量,及舉例什么是綁定變量,問什么要進(jìn)行綁定變量?Sql語句的執(zhí)行要經(jīng)過解析、執(zhí)行、提取等幾個階段,其中解析最消耗資源,解析的過程中要進(jìn)行語法、語義和權(quán)限的檢查,如果這些檢查都通過了,則進(jìn)行執(zhí)行,執(zhí)行完成之后將sql語句的執(zhí)行計劃存儲在共享池中,如果下一次有相同的sql語句要執(zhí)行,則不需要解析,直接按照已經(jīng)存在的執(zhí)行計劃進(jìn)行執(zhí)行,就可以節(jié)省資源當(dāng)多個sql語句執(zhí)行的時候大多數(shù)情況下是條件相同,只是條件里面的值不同。例如:A用戶:select*fromtwhereID=1B用戶:select*fromtwhereID=2綁定變
2、量就是將條件謂詞中不同的值保存在一個中間變量中,Oracle對用戶每次發(fā)起的sql語句做hash運算時,都產(chǎn)生相同的hash值,使用相同的執(zhí)行計劃,作為一個sql語句來執(zhí)行。Select*fromtwhereID=:X下面是綁定變量和非綁定變量的性能比較1)綁定變量執(zhí)行altersessionsetsql_trace=true;beginforxin1..10000loopexecuteimmediate'select*fromtwhereobject_name=:x'usingx;endloop;end;altersessionsets
3、ql_trace=false;trace文件中的執(zhí)行計劃和統(tǒng)計信息SQLID:gdp68zfsdqrbcPlanHash:1601196873select*fromtwhereobject_name=:xcallcountcpuelapseddiskquerycurrentrows-----------------------------------------------------------------------Parse10.000.000000Execute100000.150.170000Fetch00.000.000000
4、-----------------------------------------------------------------------total100010.150.170000Missesinlibrarycacheduringparse:0Optimizermode:ALL_ROWSParsinguserid:5(SYSTEM)(recursivedepth:1)RowsRowSourceOperation----------------------------------------------------------0TA
5、BLEACCESSFULLT(cr=0pr=0pw=0time=0uscost=301size=196card=2)RowsExecutionPlan----------------------------------------------------------0SELECTSTATEMENTMODE:ALL_ROWS0TABLEACCESSMODE:ANALYZED(FULL)OF'T'(TABLE)*******************************************************************
6、*************OVERALLTOTALSFORALLNON-RECURSIVESTATEMENTScallcountcpuelapseddiskquerycurrentrows-----------------------------------------------------------------------Parse20.000.000000Execute31.281.250001Fetch00.000.000000---------------------------------------------------
7、--------------------total51.281.260001Missesinlibrarycacheduringparse:2Missesinlibrarycacheduringexecute:1OVERALLTOTALSFORALLRECURSIVESTATEMENTScallcountcpuelapseddiskquerycurrentrows-----------------------------------------------------------------------Parse10.000.000000
8、Execute100000.150.170000Fetch00.000.000000------------------------------------------------------