新聞中心
Oracle數(shù)據(jù)庫使用過程中,有一些技巧是使用過程中需要去了解和掌握的,掌握這些技巧我們在以后使用數(shù)據(jù)庫的過程中就可以避免走很多彎路,提高查詢效率。本文主要介紹一下七點技巧,希望能對各位有所幫助,接下來我們就一一介紹。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、麻章ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的麻章網(wǎng)站制作公司
使用技巧:
1. procedure和function中的select后面不要跟變量,否則會極大的波及SQL效率。
2. TRUNCATE 在procedure中無法利用,可寫成:
- EXECUTE IMMEDIATE 'truncate table smic_rtd_bullet_lot_tmp';
3. 當(dāng)運行DML(數(shù)據(jù)壟斷語言,增刪改查)語句時,PL/SQL敞開一個內(nèi)建游標(biāo)并處理收獲,游標(biāo)是維護(hù)查詢收獲的內(nèi)存中的一個區(qū)域,游標(biāo)在運行DML語句時敞開,告終后關(guān)閉。隱式游標(biāo)只利用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三個屬性。SQL%FOUND, SQL%NOTFOUND是布爾值,SQL%ROWCOUNT是整數(shù)值。告終循環(huán)時能夠此作為退出循環(huán)的推斷規(guī)范。
4. 為了不重復(fù)解析雷同的SQL語句,在第順次解析爾后,ORACLE將SQL語句儲藏在內(nèi)存中。這塊位于系統(tǒng)大局區(qū)域SGA(system global area)的分享池(shared buffer pool)中的內(nèi)存能夠被所有的數(shù)據(jù)庫用戶分享。因而,當(dāng)你厲行一個SQL語句(有時被稱為一個游標(biāo))時,萬一它和之前的厲行過的語句全面雷同,ORACLE就能很快獲得曾經(jīng)被解析的語句以及良好的厲行路徑。分享的語句定然中意三個條件:
a. 字符級的比擬:目前被厲行的語句和分享池中的語句定然全面雷同。包括所有的空格和字母大小寫。
b. 兩個語句所指的對象定然全面雷同。例如兩個用戶對于統(tǒng)一個表,一個是table owner,一個是引用同義詞,那么是無法SQL分享的。
c. 兩個SQL語句中定然利用雷同的名字的綁定變量。凡是變量名字雷同,即便在運行時,賦于不同的綁定變量雷同的值也是能夠的。
統(tǒng)一SQL在一個session多處利用,萬一多次改變,經(jīng)常因為空格和字母大小寫不統(tǒng)一導(dǎo)致SQL未曾分享。利用 WITH a AS (SELECT * FROM ……) 將查詢命名為a,爾后能夠?qū)當(dāng)做SQL利用,能夠確保順次解析多次利用,能夠長進(jìn)效率。
5. 凡是有可能,在過程中盡量多利用COMMIT,這么過程的功能獲得長進(jìn),需求也會因為COMMIT所釋放的資源而收縮:
COMMIT所釋放的資源:
a. 回滾段上用于復(fù)如數(shù)據(jù)的消息。
b. 被過程語句獲得的鎖。
c. redo log buffer 中的空間。
d. ORACLE為管教上述3種資源中的內(nèi)部花費。
在利用COMMIT時定然要當(dāng)心到事務(wù)的全面性,切實中效率和事務(wù)全面性經(jīng)常是魚和熊掌不可得兼。
6. 穿越內(nèi)部函數(shù)長進(jìn)SQL效率。
- SELECT H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)
- FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H
- WHERE H.EMPNO = E.EMPNO
- AND H.HIST_TYPE = T.HIST_TYPE
- GROUP BY H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC;
穿越調(diào)用下面的函數(shù)能夠長進(jìn)效率。
- FUNCTION LOOKUP_HIST_TYPE(TYP IN NUMBER) RETURN VARCHAR2
- AS
- TDESC VARCHAR2(30);
- CURSOR C1 IS
- SELECT TYPE_DESC
- FROM HISTORY_TYPE
- WHERE HIST_TYPE = TYP;
- BEGIN
- OPEN C1;
- FETCH C1 INTO TDESC;
- CLOSE C1;
- RETURN (NVL(TDESC,尼康鏡頭’?’));
- END;
- FUNCTION LOOKUP_EMP(EMP IN NUMBER) RETURN VARCHAR2
- AS
- ENAME VARCHAR2(30);
- CURSOR C1 IS
- SELECT ENAME
- FROM EMP
- WHERE EMPEMPNO=EMP;
- BEGIN
- OPEN C1;
- FETCH C1 INTO ENAME;
- CLOSE C1;
- RETURN (NVL(ENAME,’?’));
- END;
- SELECT H.EMPNO,嬰兒奶粉排行榜LOOKUP_EMP(H.EMPNO),
- H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)
- FROM EMP_HISTORY H
- GROUP BY H.EMPNO , H.HIST_TYPE;
許多人適應(yīng)性想用一個SQL寫出必需的數(shù)據(jù),殊不知混雜的SQL經(jīng)常獻(xiàn)身了厲行效率。 能夠掌握上面的利用函數(shù)處理問題的措施在切實工作中是極其故含義的。
7. 通常情形下,用UNION輪換WHERE子句中的OR將會起到較好的收獲。對索引列利用OR將造成全表掃描。當(dāng)心,以上法定只針對多個索引列管用。萬一有column未曾被索引,查詢效率可能會因為你未曾抉擇OR而減退。
關(guān)于Oracle數(shù)據(jù)庫的使用技巧就介紹到這里,如果您想了解更多關(guān)于Oracle數(shù)據(jù)庫的知識,不妨看一下這里的文章:http://database./oracle/,相信會給各位帶來收獲的!
【編輯推薦】
- 談一談兼容Oracle和DB2開發(fā)時的注意事項
- 用mysqldumpslow分析執(zhí)行較慢的SQL語句
- 在SQL觸發(fā)器或存儲過程中獲取登錄用戶信息
- 局域網(wǎng)所有機(jī)器都能連接MySQL數(shù)據(jù)庫的設(shè)置命令
- 讓SQL Server Management Studio直接連接數(shù)據(jù)庫
分享標(biāo)題:Oracle數(shù)據(jù)庫一些不常見但很重要的使用技巧總結(jié)篇
標(biāo)題鏈接:http://fisionsoft.com.cn/article/djoishs.html


咨詢
建站咨詢
