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