MySQL開發規範

2021-08-18 10:51:05 字數 2146 閱讀 6374

(1) 單張表中索參數量不超過5個(建議3個左右),如果超時,一般情況下表能夠進行二次拆分。

(2) 單個索引中的字段數不超過5個(建議3個以內)。

(3) 對字串使⽤用字首索引。

(4) 建議優先考慮字首索引,必要時可新增偽列並建立索引。

(1) 表必須有主鍵。

(2) 不使用更新頻繁的列作為主鍵。

(3) 盡量不選擇字串列作為主鍵。

(4) 不允許uuid md5 hash這些作為主鍵。

(5) 預設使⽤非空的唯一鍵作為主鍵。

(6) 建議選擇自增。

(1) 頻繁sql:對最頻繁的sql必須要新增索引。

(2) 更新sql:update、delete語句的where條件列需要新增索引,否則每次更新就是表鎖。

(3) 排序sql:order by、group by、distinct的字段。充分利用索引先天順序避免排序,否則會消耗大量磁碟io。

(4) 核⼼sql:優先考慮使用覆蓋索引。

(1) 區分度最大的字段放在前面。

(2) 避免冗餘和重複索引。

(3) 索引要綜合評估資料密度和分布以及考慮查詢和更新比例。

(4) 索引命名:非唯一索引必須以 idx_欄位1_欄位2命名,唯一索引必須以uniq_欄位1_欄位2命名,索引名稱必須全部小寫。

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

(6) 索引欄位的預設值不能為null,要改為其他的default或者空。null非常影響索引的查詢效率。

(7) 反覆檢視與表相關的sql,符合最左字首的特點建立索引。多條字段重複的語句,要修改語句條件欄位的順序,為其建立一條聯合索引,減少索參數量。

(8) 能使用唯一索引就要使用唯一索引,提高查詢效率。

(9) 使用explain判斷sql語句是否合理使用索引,盡量避免extra列出現:using file sort,using temporary。

(10) sql變更需要確認索引是否需要變更並通知dba。

(1) 不在低基數列上建立索引,例如「性別」。

(2) 不在索引列進行數**算和函式運算。

(3) 如果有外來鍵,外來鍵一定要建立索引。

(1) 禁止使用大事務。整個事務要簡單,執行時間不能太長。

(2) 禁止使用觸發器、函式、儲存過程。

(3) 禁止在資料庫中進⾏數**算。

(4) 禁止對大表進行join。

(5) 禁止一次更新太多資料。一般不超過10行。

(7) 禁止使⽤order by rand()。

(8) 禁⽌單條sql語句同時更新多個表。

(1) sql語句盡可能簡單,盡力避免使用join。

(2) 降低業務耦合度,為scale out、sharding留有餘地。

(3) 不要用select *,查詢哪幾個欄位就select 這幾個字段。

(4) limit分頁注意效率。limit越大,效率越低。可以改寫limit,比如例子改寫:eg:select id from tlimit 10000, 10;  =>  select id from t where id > 10000 limit10;

select * from table order by time desc limit 10000,10;=》 select * from table where time=》 select * from table inner join(select id from table order by time limit 10000,10) as t using(id)

(5) 使用union all替代union。

(6) 減少與資料庫的互動次數。

(7) 注意使用效能分析工具explain、show profile。

(8) sql語句不可以出現隱式轉換,比如 select id from 表 where id='1'。

(9) in條件裡面的資料數量要少。

(10) 能不用not in就不用not in,會把空和null給查出來。

(11) 在sql語句中,禁止使用字首是%的like。

(12) 不使用負向查詢,如not in、like。

(13) 關於分頁查詢:程式裡建議合理使用分頁來提高效率limit,offset較大要配合子查詢使用。

(14) 使⽤預編譯語句,只傳引數,比傳遞sql語句更高效;一次解析,多次使用;降低sql注入概率。

mysql 的開發規範 MySQL開發規範

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

MySQL開發規範

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

MySQL開發規範

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