下面是我們的開(kāi)發(fā)人員給初學(xué)者關(guān)于如何提高SQL執(zhí)行效率的幾點(diǎn)建議:
1.在WHERE中盡量不要使用OR。
2.避免在索引列上使用ISNULL和ISNOTNULL;
3.采用綁定變量
4.盡量不要在where中包括子查詢;
5.用EXISTS替代IN用NOTEXISTS替代NOTIN;
6.避免在索引列上使用計(jì)算:WHERESA L*12>25000;
7.用IN來(lái)替代ORWHERELOC_ID=10ORLOC_ID=15ORLOC_ID=20
8.盡量不要寫(xiě)成:whereto_chardif_date,關(guān)于時(shí)間的查詢。'yyyy-mm-dd'=to_char'2007-07-01','yyyy-mm-dd';可以過(guò)濾掉最大數(shù)量記錄的條件必需放在where子句的末尾在過(guò)濾條件中。;
drivetabl將被最先處理,F(xiàn)ROM子句中寫(xiě)在最后的表(基礎(chǔ)表。FROM子句中包括多個(gè)表的情況下,必需選擇記錄條數(shù)最少的表作為基礎(chǔ)表。如果有三個(gè)以上的連接查詢,那就需要選擇交叉表(intersecttabl作為基礎(chǔ)表,交叉表是指那個(gè)被其他表所引用的表;
9.總是使用索引的第一個(gè)列;
10.用UNION-A LL替代UNION;
11.盡量少讓數(shù)據(jù)庫(kù)工作。比如寫(xiě)SELECT語(yǔ)句時(shí),盡量明確的完成SQL語(yǔ)句。需要把查詢的字段明確指出表名。盡量不要使用SELECT*語(yǔ)句。組織SQL語(yǔ)句的時(shí)候,盡量依照數(shù)據(jù)庫(kù)的習(xí)慣進(jìn)行組織。
12.'!='將不使用索引;
13.優(yōu)化GROUPBY;
14.LIKE'4YE%'使用索引,避免帶有LIKE參數(shù)的通配符。但LIKE'%YE'不使用索引;
15.例如select*fromcustomwherezipcodlike"98___"即便在zipcod上建立了索引,防止使用困難的正規(guī)表達(dá)式。這種情況下也還是采用順序掃描的方式。如果把語(yǔ)句改成select*fromcustomwherezipcode>"98000"執(zhí)行查詢時(shí)就會(huì)利用索引來(lái)查詢,顯然會(huì)大大提高速度;
16.to_charEMPNO='123'因此,防止改變索引列的類型:SELECT...FROMEMPWHEREEMPNO='123'由于隱式數(shù)據(jù)類型轉(zhuǎn)換。將不采用索引,一般在采用字符串拼湊動(dòng)態(tài)SQL語(yǔ)句呈現(xiàn);
Copyright@ 2011-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號(hào) google網(wǎng)站地圖 百度網(wǎng)站地圖 網(wǎng)站地圖
公司地址:大連市沙河口區(qū)中山路692號(hào)辰熙星海國(guó)際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明