泰克北大青鳥信息技術(shù)_第1頁
泰克北大青鳥信息技術(shù)_第2頁
泰克北大青鳥信息技術(shù)_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

查詢的其他優(yōu)化方ORACLEFROMFROM擇記錄條數(shù)最少的表作為基礎(chǔ)表。如果有3個(gè)以上的表連接查詢,那就需要選擇交叉表(intersectiontable)作為基礎(chǔ)表,交叉表是指那個(gè)被其他表所的表.WHERE條件之前,那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾.SELECT*字典完成的,這意味著將耗費(fèi)的時(shí)間SQL*PlusSQL*FormsPro*CARRAYSIZE數(shù)據(jù)庫的檢索數(shù)據(jù)量,建議值為200最高效的刪除重復(fù)記錄方法(因?yàn)槭褂昧薘OWID)例子:DELETEFROMEMPEWHEREE.ROWID(SELECTMIN(X.ROWID)FROMEMPXWHEREX.EMP_NO=E.EMP_NO);TRUNCATE替代rollbacksegmentsCOMMIT,ORACLETRUNCATE只在刪除全表適用,TRUNCATE是DDL不是DML)COMMIT所釋放的資源:redologbuffer避免使用HAVING子句,HAVING只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過濾.這WHERE子句限制記錄的數(shù)目,那就能減少這方面oracle中)on、where、having這三個(gè)都可以加條件的子句中,on是最先執(zhí)行,where,havingon是先把不符合條件的記錄過濾后才進(jìn)行統(tǒng)計(jì),它sumonSELECTTAB_NAMEFROMTABLESWHERE(TAB_NAME,DB_VER)=(TAB_NAME,DB_VERFROMTAB_COLUMNSWHEREVERSION=一來,就可以減少解析的時(shí)間并減少那些由Column歧義引起的語法錯(cuò)誤.EXISTSINNOTEXISTSNOTEXISTS(NOTEXISTSNOTINNOTIN的表執(zhí)行了一個(gè)全表遍歷).為了避免使用NOTIN我們可以把它改寫成外連接(OuterJoins)或NOTEXISTS.(高效)SELECT*FROMEMPWHEREEMPNO0ANDEXISTSSELECTX'FROMDEPTWHEREDEPT.DEPTNO=EMP.DEPTNOANDLOC=‘MELB')(低效)SELECT*FROMEMPWHEREEMPNO0ANDDEPTNOIN(SELECTDEPTNOFROMDEPTWHERELOC=‘MELB')SELECTEXECUTIONS,DISK_READS,BUFFER_GETS,FROMV$SQLAREAWHEREEXECUTIONS>0ANDBUFFER_GETS>AND(BUFFER_GETS-DISK_READS)/BUFFER_GETS<0.8ORDERBY4DESC;B-tree結(jié)構(gòu).通常,通過索引查詢數(shù)據(jù)比全表掃描要快.當(dāng)ORACLE找出執(zhí)行查詢和Update語句的最佳路徑時(shí),ORACLE優(yōu)化器將使用索引.同樣在聯(lián)結(jié)多個(gè)表時(shí)使用索引也另一個(gè)使用索引的好處是,它提供了主鍵(primarykey)的唯一性驗(yàn)證.。那些LONG或LONGRAW數(shù)據(jù)類型,你可以索引幾乎所有的列.通常,在大型表中使用索引特別有效.當(dāng)然,你也會(huì)發(fā)現(xiàn),在掃描小表時(shí),使用索引同樣能提高效率.雖然使用索引能得到查詢效率的提高,但是我們也必須注意到它的代價(jià).索引需要空間來,也需要定期,每當(dāng)有INSERTDELETE,UPDATE將為此多付出4,5次的磁盤I/O.因?yàn)樗饕枰~外的空間和處ALTERINDEXINDEXNAMEREBUILDTABLESPACENAME>(18)用EXISTS替換DISTINCT:SELECT塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.例子:SELECTDISTINCTDEPT_NO,DEPT_NAMEFROMDEPTD,EMPEWHERED.DEPT_NO=E.DEPT_NOSELECTDEPT_NO,DEPT_NAMEFROMDEPTDWHEREEXISTS(SELECTFROMEMPEWHEREE.DEPT_NO=sqloraclesqlSELECT…FROMDEPTWHERESAL*12>SELECT…FROMDEPTWHERESAL>SELECT*FROMEMPWHEREDEPTNOSELECT*FROMEMPWHEREDEPTNODEPTNO=3DEPT3UNIONWHEREORORcolumn查詢效率可能會(huì)因?yàn)槟銢]有選擇ORLOC_ID和REGIONSELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHERELOC_ID=10SELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHEREREGION=SELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHERELOC_ID=10ORREGION=SELECT….FROMLOCATIONWHERELOC_ID=10ORLOC_ID=20ORLOC_ID=SELECT…FROMLOCATIONWHERELOC_ININISNULLISNOT避免在索引中使用任何可以為空的列,ORACLE將無法使用該索引.對(duì)于單列索引,如ABA,B123,null)ORACLE1000都是空!因?yàn)榭罩挡淮嬖谟谒饕兄?所以WHERE子句中對(duì)索引列進(jìn)行空值比較將使ORACLE停用該索引.SELECT…FROMDEPARTMENTWHEREDEPT_CODEISNOTSELECT…FROMDEPARTMENTWHEREDEPT_CODE如果索引是建立在多個(gè)列上,只有在它的第一個(gè)列(leadingcolumnwhere子句引時(shí),優(yōu)化器使用了全表掃描而忽略了索引SQLUNIONUNION-ALLUNIONALLUNION,UNIONALLUNION下面的SQL可以用來查詢排序的消耗量SELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'SELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'SELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'UNIONALLSELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'WHEREORDERORDERBY中所有的列必須定義為非空.DEPT_CODEPKNOTNULLDEPT_DESCNOTNULLDEPT_TYPENULLSELECTDEPT_CODEFROMDEPTORDERBYSELECTDEPT_CODEFROMDEPTWHEREDEPT_TYPE>假設(shè)EMPNO是一個(gè)數(shù)值類型的索引列.SELECT…FROMEMPWHEREEMPNO=SELECT…FROMEMPWHEREEMPNO=現(xiàn)在,假設(shè)EMP_TYPE是一個(gè)字符類型的索引列.SELECT…FROMEMPWHEREEMP_TYPE=SELECT…FROMEMP因?yàn)閮?nèi)部發(fā)生的類型轉(zhuǎn)換,這個(gè)索引將不會(huì)被用到!為了避免ORACLE對(duì)你的SQL進(jìn)行ORACLE(2)||執(zhí)行耗費(fèi)資源的排序(SORT)功能.DISTINCT需要一次排序操作,而其他的至少需要執(zhí)UNION,MINUSINTERSECT的SQLSORT_AREA_S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論