前言:很多開發人員在寫代碼、開發的過程中對一些SQL語句或者程序的細節並不在意,有的人即使知道優化的寫法可能也會認爲這一點點細節不會影響程序的整體效率的。
在此我想說明:一個開發有這種想法,就說明千千萬萬個開發有這種想法,衆多細小的問題在足夠的積累下終有一天會爆發,最後維護程序的人很可能還是自己。
在衆多項目開發過程中我總結了一些特別實用的SQL優化細節,希望各位不止SQL中注意優化,程序中也要注意編碼效率。
-
必須和禁止
-
非特殊情況,不得使用視圖
-
儘量使用常規數據庫都能識別的、標準的DQL/DML語句
-
必須使用特定數據庫獨有的SQL語句時,應在sqlmap的id中以數據庫類型結尾,並對常用數據庫分別寫實現的SQL語句
-
必須遵循數據庫第一範式,避免對列做substr
-
避免對條件語句中的like進行右匹配或中間匹配(會走全面掃描)
-
禁止對大數據量的表進行連接或左右連接
-
SELECT的列中禁止使用子查詢
-
WHERE子句中,僅對確定且有限的集合使用IN,應儘量使用EXISTS
-
對UPDATE/DELETE語句,嚴禁不跟WHERE子句,或僅有WHERE 1=1,而沒有實質性的條件
規範編碼,定期總結,方便自己,舒適用戶,做優質程序員