mysql 的開發規範 MySQL開發規範

2021-10-25 14:24:53 字數 1897 閱讀 6898

一、基礎規範

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,檢視索引使用情況

五、資料庫三大正規化

第 一正規化和第二正規化在於有沒有分出兩張表,第二正規化是說一張表中包含了多種不同的實體屬性,那麼要必須分成多張表, 第三正規化是要求已經分成了多張表,那麼一張表中只能有另一張表中的id(主鍵),而不能有其他的任何資訊(其他的資訊一律用主鍵在另一表查詢)。

第1正規化:每個表中都有1列,並且該列是不可拆分的最小單元

第2正規化:1張表只描述一件事情

第3正規化:用外來鍵做表的關聯

六、資料庫五大約束

1)primary key:設定主鍵約束;

2)unique:設定唯一性約束,不能有重複值;

3)default:預設值約束,height double(3,2)default 1.2 height不輸入是預設為1,2

4)not null:設定非空約束,該欄位不能為空;

5)foreign key:設定外來鍵約束。

MySQL開發規範

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

MySQL開發規範

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

MySQL開發規範

本文件是為幫助研發與運維人員按照規範使用mysql資料庫,提公升研發寫sql的水平。致力於提供乙個安全,穩定,高效能的資料庫環境。命名規範 1 庫名 表名 欄位名必須使用小寫字母,分割。2 庫名 表名 欄位名不超過12個字元。3 庫名 表名 欄位名禁止使用mysql保留字,見附件。4 庫名 表名 欄...