一些sql優化的方法

    1.避免出現SELECT * FROM table 語句,要明確查出的字段。 
    2.在一個SQL語句中,若是一個where條件過濾的數據庫記錄越多,定位越準確,則該where條件越應該前移。
    3.查詢時儘量使用索引覆蓋。即對SELECT的字段創建複合索引,這樣查詢時只進行索引掃描,不讀取數據塊
    4.在判斷有無符合條件的記錄時建議不要用SELECT COUNT (*)和select top 1 語句。
    5.使用內層限定原則,在拼寫SQL語句時,將查詢條件分解、分類,並儘可能在SQL語句的最裏層進行限定,以減小數據的處理量。
    6.應絕對避免在order by子句中使用表達式。 
    7.若是須要從關聯表讀數據,關聯的表通常不要超過7個
    8.當心使用 IN 和 OR,須要注意In集合中的數據量。建議集合中的數據不超過200個。
    9.<> 用 < 、 > 代替,>用>=代替,<用<=代替,這樣能夠有效的利用索引。
    10.在查詢時儘可能減小對多餘數據的讀取包括多餘的列與多餘的行。
    
    11.對於複合索引要注意,例如在創建複合索引時列的順序是F1,F2,F3,
    則在where或order by子句中這些字段出現的順序要與創建索引時的字段順序一致,且必須包含第一列。只能是F1或F1,F2或F1,F2,F3。不然不會用到該索引
    
    12.對於能用鏈接方式或者視圖方式實現的功能,不要用子查詢
    
    在WHERE 子句中,避免對列的四則運算,特別是where 條件的左邊,嚴禁使用運算與函數對列進行處理。好比有些地方 substring 能夠用like代替。
    
    13.若是在語句中有not in(in)操做,應考慮用not exists(exists)來重寫,最好的辦法是使用外鏈接實現。
    14.數據更14新的效率 
        1. 在一個事物中,對同一個表的多個insert語句應該集中在一塊兒執行。 
        2. 在一個業務過程當中,儘可能的使insert,update,delete語句在業務結束前執行,以減小死鎖的可能性。 
        
    15.用union all 代替 union,數據庫執行union操做,首先先分別執行union兩端的查詢,將其放在臨時表中,而後在對其進行排序,過濾重複的記錄。 數據庫

相關文章
相關標籤/搜索