SQL優化的方法

一、經常使用字段建索引,一個表索引最多不要超過6個
二、注意UNion和UNion all 的區別。UNION all好
三、沒有必要時不要用DISTINCT和ORDER BY,這些動做能夠改在客戶端執行。它們增長了額外的開銷。這同UNION 和UNION ALL同樣的道理
四、查詢時不要返回不須要的行、列
五、在IN後面值的列表中,將出現最頻繁的值放在最前面,出現得最少的放在最後面,減小判斷的次數
六、使用GROUP BY ,HAVING時,首先進行數據過濾,再進行GROUP BY ,HAVING,這樣開銷小。若是Group BY的目的不包括計算,只是分組,那麼用Distinct更快。
七、一次更新多條記錄比分屢次更新每次一條快,就是說批處理好 
八、儘可能避免使用遊標,由於遊標的效率較差,若是遊標操做的數據超過1萬行,那麼就應該改寫;若是使用了遊標,就要儘可能避免在遊標循環中再進行錶鏈接的操做。
九、不要在where子句中的「=」左邊進行函數、算術運算或其餘表達式運算,不然系統將可能沒法正確使用索引。
十、儘可能使用exists代替select count(1)來判斷是否存在記錄,count函數只有在統計表中全部行數時使用,並且count(1)比count(*)更有效率。
十一、儘可能使用「>=」,不要使用「>」。
十二、多表鏈接查詢時,過濾多數據的條件放到where語句最後 1三、儘可能避免大事務操做,提供併發性。
1四、執行慢會增長數據庫磁盤IO使用率,會引發磁盤IO不夠用,慢慢造成堵塞,引發 宕機
1五、注意insert、update操做的數據量,防止與其餘應用衝突。若是數據量超過200個數據頁面(400k),那麼系統將會進行鎖升級,頁級鎖會升級成表級鎖
1六、在使用索引字段做爲條件時,若是該索引是聯合索引,那麼必須使用到該索引中的第一個字段做爲條件時才能保證系統使用該索引,不然該索引將不會被使用數據庫

相關文章
相關標籤/搜索