MySQL開發規範

2021-09-19 19:56:52 字數 1630 閱讀 8317

一、基礎規範

1)    使用innodb儲存引擎

2)    資料庫字符集使用utf8,校對字符集使用utf8_general_ci

3)    所有表、欄位都盡量新增注釋

4)    庫名、表名、欄位名使用小寫字母,禁止超過32個字元,須見名知意

5)    非唯一索引以 「idx_欄位1_欄位2」 命名,唯一索引必須以 「uniq_欄位1_欄位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)    事務要盡量簡單,整個事務的時間長度不要太長

三、表設計規範

1)    用decimal代替float和double儲存精確浮點數(精確資料)

2)    使用tinyint代替enum型別(便於遷移時相容)

3)    盡可能不使用text、blob型別(該資料型別不能設定預設值、不便於排序、不便於建立索引)

4)    同一意義的字段設計定義必須相同(便於聯表查詢)

5)    所有欄位均定義為not null(避免使用null欄位,null欄位很難查詢優化,null欄位的索引需要額外空間,null欄位的復合索引無效)

6)    表必須有主鍵,不使用更新頻繁的列做主鍵、盡量不使用字串列做主鍵,盡量使用非空的唯一自增鍵做主鍵

四、索引設計規範

1)    單錶索參數量不超過10個

2)    單個字段不要超過兩個索引

3)    新建的唯一索引必須不能和主鍵重複

4)    避免冗餘和重複索引

5)    盡量不要在頻繁更新的列上建立索引

6)    不在低基數列上建立索引,例如狀態、型別等

7)    不在索引列進行數**算和函式運算(參與了運算的列不會引用索引)

8)    復合索引須符合最左字首的特點建立索引(mysql使用復合索引時從左向右匹配)

9)    重要的sql中where條件裡的字段必須被索引

10)    where條件裡的字段順序與索引順序無關,優化器會自動調整

11)    索引選擇性= cardinality / total rows,即基數 ÷ 資料行數,值越接近1說明使用索引的過濾效果越好

12)    建立索引時,務必先explain,檢視索引使用情況

mysql 的開發規範 MySQL開發規範

一 基礎規範 1 使用innodb儲存引擎 2 資料庫字符集使用utf8,校對字符集使用utf8 general ci 3 所有表 欄位都盡量新增注釋 4 庫名 表名 欄位名使用小寫字母,禁止超過32個字元,須見名知意 5 非唯一索引以 idx 欄位1 欄位2 命名,唯一索引必須以 uniq 欄位1...

MySQL開發規範

1 單張表中索參數量不超過5個 建議3個左右 如果超時,一般情況下表能夠進行二次拆分。2 單個索引中的字段數不超過5個 建議3個以內 3 對字串使 用字首索引。4 建議優先考慮字首索引,必要時可新增偽列並建立索引。1 表必須有主鍵。2 不使用更新頻繁的列作為主鍵。3 盡量不選擇字串列作為主鍵。4 不...

MySQL開發規範

1 庫名 表名 欄位名必須使用小寫字母並採用下劃線分割 2 庫名 表名 欄位名支援最多32個字元,統一規範 易於辨識以及減少傳輸量不要超過32 3 庫名 表名 欄位名禁止使用mysql保留關鍵字 4 臨時庫 臨時表名必須以tmp為字首並以日期為字尾 5 備份庫 備份表名必須以bak為字首並以日期為字...