一、SQL儘可能採用標準SQL,有利於移植。mysql
好比Oracle中,CUD操做支持給表加別名,可是mysql中不支持。sql
若是數據庫從oracle遷移到mysql,則須要修改SQL。數據庫
二、在寫SQL的時候,採用可讀性好的格式。oracle
例如:1行表示一個項目,SQL關鍵字保持在同一列,非SQL關鍵字縮進code
SELECT COUNT(1) FROM T_AUTH_USER WHERE LOGIN_NAME = #{userName} AND XXX = YYY GROUP BY AAA, BBB ORDER BY CCC, EEE
三、給查詢頻率高的表添加索引,提供查詢效率。索引
四、能用一條SQL完成的,不用兩條SQL完成。class
五、能用兩條或多條SQL完成的,不用帶遊標的存儲過程。效率
六、能用帶遊標的存儲過程完成的,不用JAVA實現。select
七、大表查詢不用in/not in,用exists/not exists代替。數據
八、大表清空數據,採用truncate代替delete。
九、限制工做數據集的大小,過濾掉一切沒必要要的數據。
十、只選擇你須要的字段,杜絕使用select *查詢。
十一、杜絕使用select count(*),使用select count(1) 代替。
十二、不要查詢沒必要要的表。
1三、儘可能避免在JOIN和WHERE子句中進行計算。
1四、特殊場景下使用1=1,1=2組合查詢條件。
"1=1"表示所有選擇,"1=2"表示所有不選。