




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、當(dāng)我們把一個sql語句提交完后,Oracle綁定變量會檢查一下在共享緩沖池( shared pool )中有無與之完全相同的相關(guān)語句,如果有的話只須執(zhí)行軟分析即可,否則就得進(jìn)行硬分析。而唯一使得oracle能夠重復(fù)利用執(zhí)行計(jì)劃的方法就是采用綁定變量。綁定變量的實(shí)質(zhì)就是用于替代sql語句中的常量的替代變量。綁定變量能夠使得每次提交的sql語句都完全一樣。在字段(包括字段集)建有索引,且字段(集)的集的勢非常大(也就是有個值在字段中出現(xiàn)的比例特別的大)的情況下,使用綁定變量可能會導(dǎo)致查詢計(jì)劃錯誤,因而會使查詢效率非常低。這種情況最好不要使用綁定變量。但是并不是任何情況下都需要使用綁定變量,下面是兩
2、種例外情況:1 .對于隔相當(dāng)一段時(shí)間才執(zhí)行一次的SQL語句,這是利用綁定變量的好處會被不能有效利用優(yōu)化器而抵消2.數(shù)據(jù)倉庫的情況下。綁定變量不能當(dāng)作嵌入的字符串來使用,只能當(dāng)作語句中的變量來用。不能用Oracle綁定變量來代替表名、過程名、字段名等從效率來看,由于 OraclelOG放棄了RBO全面引入CBO因此,在10G中使用綁定變量效率的提升比9i中更為明顯。舉例:普通sql語句:SELECT fname, l name, pcode FROM cust WHERE id = 674;SELECT fname, l name, pcode FROM cust WHERE id = 234;
3、SELECT fname, l name, pcode FROM cust WHERE id = 332;含綁定變量的sql語句:SELECT fname, l name, pcode FROM cust WHERE id = :cust_ no;Sql*plus中使用Oracle綁定變量:SQL> set tim ing onSQL> variable x nu mber;SQL> exec :x :=8P L/SQL過程已成功完成。已用時(shí)間:00: 00: 00.03SQL> select * from A;ID已用時(shí)間:00: 00: 00.06SQL> i
4、nsert into A values(:x);已創(chuàng)建1行。已用時(shí)間:00: 00: 00.01SQL> select * from A;ID已用時(shí)間:00: 00: 00.01PL/SQL很多時(shí)候都會自動綁定變量而無需編程人員操心,即很多你寫得sql語句都會自動利用 Oracle綁定變量,如下例所示:SQL> Set timi ng onSQL> declare2 I NUMBER;3 BEGIN4 FOR I IN 1.1000 LOOP5 INSERT INTO A VALUES(I);6 end loop;7 end;P L/SQL過程已成功完成。已用時(shí)間:00: 0
5、0: 00.128 /這段代碼是不需要使用Oracle綁定變量的方法來提高效率的, Oracle會自動將其中的變量綁定。SQL> create table D ( id varchar(IO);表已創(chuàng)建。已用時(shí)間:00: 00: 00.50SQL> declare2 i nu mber;3 sqistr varchar(2000);4 begi n5 for i in 1.1000 loop6 sqlstr :=' i nsert into d values('|to_char(i)|')'7 execute immediate sqlstr;8 e
6、nd loop;9 end;10 /P L/SQL過程已成功完成。已用時(shí)間:00: 00: 00.68這段代碼同樣是執(zhí)行了1000條insert語句,但是每一條語句都是不同的,因此Oracle會把每條語句硬解析一次,其效率就比前面那段就低得多了。如果要提高效率,不妨使用綁定變量將循環(huán)中的語句改為SQL> declarev2 i nu mber;3 sqlstr varchar(2000);4 begin5 for i in 1.1000 loop6 sqlstr :=' i nsert into d values(:i)'7 execute immediate sqlstr using i;8 end loop;9 end;10 /P L/SQL過程已成功完成。已用時(shí)間:00: 00: 00.18這樣執(zhí)行的效率就高得多了。在PL/SQL中,引用變量即是引用綁定變量。但是在 Pl/sql中動態(tài)sql并不是這樣。在 vb,java以及其他應(yīng)用程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省衡陽縣2025屆五下數(shù)學(xué)期末聯(lián)考模擬試題含答案
- 安徽科技學(xué)院《SAS與統(tǒng)計(jì)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 日喀則地區(qū)康馬縣2025屆四年級數(shù)學(xué)第二學(xué)期期末監(jiān)測試題含解析
- 邢臺醫(yī)學(xué)高等??茖W(xué)校《食品分析實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京信息科技大學(xué)《發(fā)展心理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西藝術(shù)職業(yè)學(xué)院《建筑法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 供水工程管理制度
- 智能美容檢測產(chǎn)品調(diào)查問卷
- 常用筆種類調(diào)查
- 2025年網(wǎng)絡(luò)直播投資分析:傳統(tǒng)文化與現(xiàn)代傳播的融合之道
- BEC商務(wù)英語高級考試歷年真題
- 手衛(wèi)生醫(yī)療廢物管理培訓(xùn)培訓(xùn)課件
- GB/T 4238-2015耐熱鋼鋼板和鋼帶
- CCRW程序簡介匯總課件
- 中醫(yī)拔罐技術(shù)課件
- 西藏自治區(qū)山南市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 2022年菏澤市鄆城縣中醫(yī)院醫(yī)護(hù)人員招聘考試筆試題庫及答案解析
- 青樓韻語嫖經(jīng)、明代嫖經(jīng)全文-古籍
- 中小學(xué)教師職業(yè)道德規(guī)范
- 無創(chuàng)呼吸機(jī)臨床應(yīng)用護(hù)士操作手冊
- 7S管理標(biāo)準(zhǔn)-目視化管理標(biāo)準(zhǔn)
評論
0/150
提交評論