您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關MySQL有哪些開發規范,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
#MySQL開發規范
##命名規范
庫名、表名、字段名必須使用小寫字母,并采用下劃線分割
庫名、表名、字段名禁止超過32字字符。須見名之意
庫名、表名、字段名禁止使用Mysql保留字
臨時庫、表名必須以tmp為前綴,并以日期為后綴
備份庫、表名必須以bak為前綴,并以日期為后綴
create table user ... tmp_user_20160606 bak_user_20160606
##基礎規范
使用innodb存儲引擎
表字符集使用utf-8
所有表必須添加注釋
單表數據量控制在5000w以內
不在數據庫中存儲圖片、文件等大數據
禁止在線上做數據庫壓力測試
##庫表設計
禁止使用分區表
拆分大字段和訪問頻率低的字段,分離冷熱數據
用hash進行散表,表名后綴使用十進制數,下標從0開始
按日期時間分表需符合YYYY[MM][DD][HH]格式
采用合適的分庫分表策略。例如十庫百表等
##字段設計
所有字段均定義為not null
盡量不使用TEXT、BLOB類型
使用decimal代替float和double存儲精確浮點數
使用tinyint代替enum類型
使用unsigned存儲非負整數
使用timestamp存儲時間
使用int存儲時間戳
使用int存儲ip
禁止在數據庫存儲明文密碼
##索引規范
單張表索引數量不超過5個
單個索引中的字段數不超過5個
前綴索引長度不超過8個字符
區分度最大的字段放在前面。如:聯合索引
盡量不選擇字符串列
不使用外鍵
不使用更新頻繁的列
不使用UUID MD5 HASH
不使用%前導的查詢,如like "%ab"
不使用負向查詢,如not in/like
不在低基數列上建立索引,例如:性別
不在索引列進行數學運算和函數運算
##SQL設計
充分利用前綴索引,例如:最左前綴
不使用select *
不能同時用到兩個范圍條件
不使用存儲過程、觸發器、視圖等
不使用大表join
不使用數學運算和邏輯判斷
不使用order by rand()
不使用單條sql語句同時更新多個表
多使用insert ... on duplicate key update
多使用replace into、insert ignore、insert into values(),(),()
多使用update ... where id in(10,20,50,...)
使用in代替or, in的值不超過1000個
使用explain診斷,避免生成臨時表
使用union all而不是union
###good select * from profiles where sex='M' order by rating limit 10; select * from profiles inner join (select from profiles where x.sex='M' order by rating limit 100000,10) as x using (); ###bad select * from profiles where sex='M' order by rating limit 100000,10;
##行為規范
禁止有super權限的應用程序賬號存在
不在業務高峰其期批量更新、查詢數據庫
提交線上建表改表需求,必須詳細注明所有相關sql語句
上述就是小編為大家分享的MySQL有哪些開發規范了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。