MySQL開發規範

Mysql 開發規範
1、基礎規範
1)    使用InnoDB存儲引擎
2)    數據庫字符集使用UTF8,校對字符集使用utf8_general_ci
3)    全部表、字段都儘可能添加註釋
4)    庫名、表名、字段名使用小寫字母,禁止超過32個字符,須見名知意
5)    非惟一索引以 「idx_字段1_字段2」 命名,惟一索引必須以 「uniq_字段1_字段2」 命名
2、查詢規範
1)    SQL語句儘量簡單,大的SQL想辦法拆分紅小的SQL實現
2)    不要使用SELECT * ,查詢具體要用到的字段
3)    禁止like作where條件(會全表掃描且不能用索引)
4)    除非必要,避免使用 != 等非等值操做符(會致使用不到索引)
5)    Where條件裏不要對列使用函數(不會引用索引)
6)    能肯定返回結果只有一條時,使用limit 1(LIMIT分頁注意效率,LIMIT越大,效率越低)
7)    少用子查詢,改用JOIN(子查詢要在內存裏建臨時表)
8)    多表JOIN的字段,區分度最大的字段放在前面
9)    IN條件裏的數據數量要儘可能少,超過200個用EXIST代替IN
10)    Where字句中同一個表的不一樣字段組合建議小於5組(不然考慮分表)
11)    禁止單條語句同時更新多個表
12)    事務要儘可能簡單,整個事務的時間長度不要太長
3、表設計規範
1)    用DECIMAL代替FLOAT和DOUBLE存儲精確浮點數(精確數據)
2)    使用TINYINT代替ENUM類型(便於遷移時兼容)
3)    儘量不使用TEXT、BLOB類型(該數據類型不能設置默認值、不便於排序、不便於創建索引)
4)    同一意義的字段設計定義必須相同(便於聯表查詢)
5)    全部字段均定義爲NOT NULL(避免使用NULL字段,NULL字段很難查詢優化,NULL字段的索引須要額外空間,NULL字段的複合索引無效)
6)    表必須有主鍵,不使用更新頻繁的列作主鍵、儘可能不使用字符串列作主鍵,儘可能使用非空的惟一自增鍵作主鍵
4、索引設計規範
1)    單表索引數量不超過10個
2)    單個字段不要超過兩個索引
3)    新建的惟一索引必須不能和主鍵重複
4)    避免冗餘和重複索引
5)    儘可能不要在頻繁更新的列上創建索引
6)    不在低基數列上創建索引,例如狀態、類型等
7)    不在索引列進行數學運算和函數運算(參與了運算的列不會引用索引)
8)    複合索引須符合最左前綴的特色創建索引(mysql使用複合索引時從左向右匹配)
9)    重要的SQL中where條件裏的字段必須被索引
10)    Where條件裏的字段順序與索引順序無關,優化器會自動調整
11)    索引選擇性= Cardinality / Total Rows,即基數 ÷ 數據行數,值越接近1說明使用索引的過濾效果越好
12)    創建索引時,務必先explain,查看索引使用狀況

 mysql

相關文章
相關標籤/搜索