提高SQL執行效率的幾點建議

來源:互聯網
上載者:User
關鍵字 網路程式設計 資料庫綜合

提高SQL執行效率的幾點建議:

◆儘量不要在where中包含子查詢;

關於時間的查詢,儘量不要寫成:where to_char(dif_date,'yyyy-mm-dd')=to_char('2007-07-01','yyyy-mm-dd');

◆在過濾條件中,可以過濾掉最大數量記錄的條件必須放在where子句的末尾;

FROM子句中寫在最後的表(基礎資料表,driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎資料表。 如果有三個以上的連接查詢,那就需要選擇交叉表(intersection table)作為基礎資料表,交叉表是指那個被其他表所引用的表;

◆採用綁定變數

◆在WHERE中儘量不要使用OR

◆用EXISTS替代IN、用NOT EXISTS替代NOT IN;

◆避免在索引列上使用計算:WHERE SAL*12>25000;

◆用IN來替代OR: WHERE LOC_ID=10 OR LOC_ID=15 OR LOC_ID=20

◆避免在索引列上使用IS Null和IS NOT Null;

◆總是使用索引的第一個列;

◆用UNION-ALL替代UNION;

◆避免改變索引列的類型:SELECT... FROM EMP WHERE EMPNO='123',由於隱式資料類型轉換,to_char(EMPNO)='123',因此,將不採用索引,一般在採用字串拼湊動態SQL語句出現;

◆'!=' 將不使用索引;

◆優化GROUP BY;

◆避免帶有LIKE參數的萬用字元,LIKE '4YE%'使用索引,但LIKE '%YE'不使用索引

◆避免使用困難的正規運算式,例如select * from customer where zipcode like "98___",即便在zipcode上建立了索引,在這種情況下也還是採用順序掃描的方式。 如果把語句改成select * from customer where zipcode>"98000",在執行查詢時就會利用索引來查詢,顯然會大大提高速度;

◆儘量明確的完成SQL語句,儘量少讓資料庫工作。 比如寫SELECT語句時,需要把查詢的欄位明確指出表名。 儘量不要使用SELECT *語句。 組織SQL語句的時候,儘量按照資料庫的習慣進行組織

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.