規則
一、建表規則
1.表必須有create_time和update_time欄位,並且這兩列上都有索引
2.auto_increment 預設情況下為1開始
3. 預設字符集為utf8/utf8mb4,不需要指定表或者列的字元和校驗規則
bad case : create table table_name
(name varchar(20) charaset utf8 collate utf8_general_ci not null default ‘’ comment ''
) DEFAULT CHARSET=utf8
good case : create table table_name
(name varchar(20) not null default comment '')
4.表和列的註釋要有表和列的作用,誰建立的,建立時間。 建立時間必須為當天時間,不要從沙盒匯出來就複製到tb上。
例如:
create table table_name
(name varchar(20) not null default ‘’ comment '名字|張三|20180613'
) comment = '表是幹什麼的|誰建立的|當天的日期'
5.列必須明確指定為not null,不允許出現default null 的字樣,看上面的例子。
1)NULL的列使用索引,索引統計,值都更加複雜,MySQL更難優化
2)NULL需要更多的儲存空間
3)NULL只能採用IS NULL或者IS NOT NULL
6.必須有主鍵自增列最好用bigint型別
1)int有負號最高2147483647、無負號最高4294967295 , bigint 有負號9223372036854775807 無負號18446744073709551615
2)無主鍵的大表在row模式下做delete操作偶發從庫會夯住
7.精確度要求高的要用decimal
8.欄位型別的長度滿足就好不要寫的特長
bad case: name varchar(100)
good case:name varchar(10)
9.正常表的列個數不超過30
10.大欄位列(text,blob)儘量單獨建個表存放
11.禁止使用外來鍵控制關係,由程式實現
影響效能,易造成瓶頸
12.建議使用TINYINT來代替ENUM
ENUM增加選項是要做ddl操作。
13.關鍵的業務環節,需要有單獨的時間和描述欄位,不能複用。
二、索引規則
1.單張表索引數量建議控制在5個以內
1)多了會造成資料庫不能選擇正確的索引
2.組合索引欄位數不建議超過5個
1)如果太多索引失效
3.不要在頻繁更新的欄位上建立索引
4.聯合索引最左字首原則,避免重複建設索引
三、命名規則
1.使用者名稱不得超過16個字元
2.表名列名要清晰,讓人一看就明白
3.索引名字加個字首idx_,唯一索引uniq_
idx_create_time, uniq_create_time
4.備份表的名字在表名後面加上日期和名字
goods_order---->goods_order_20180613_majianli
四、sql規則
1.禁止使用select * 需要哪些欄位寫哪些欄位
2.JOIN關聯查詢時要確保關聯條件的型別是一致的,並且兩列都是有索引的
left join 的關係是N:1
join的關係是N:N
3.避免隱式型別轉
phone varchar(20)
bad case : select name from tabe_name where phone = 1366666666;
good case : select name from tabe_name where phone = '1366666666';
4.不要在索引列做計算和加函式使用
5.禁止使用select * 查詢
*會增加cpu、io、記憶體、帶的消耗
如有覆蓋索引*不會使用到
6.insert操作必須指定欄位
表結構有變動時不會有影響
7.合理使用子查詢,不要太相信網上傳言MySQL的子查詢不好。
8.學會看執行計劃,不是走索引了就可以的。
這個很重要
9.一直都在說拒絕3B
big sql
big transation
big batch
及其複雜的sql放在對應功能的資料庫上做運算
10.新增列索引等
新增多個列/索引 對應一個表時用一個alter語句
alter table_name add name1 。。。。。。
alter table_name add name2 。。。。。。
alter table_name add name3 。。。。。。
改成:
alter table_name add name1 。。。。,add name2 。。。。,add name3 。。。。;
四、其他規則
1.引擎使用innodb
2.字元使用utf8或者utf8mb4
3.禁止使用儲存過程,檢視,觸發器等
4.不使用的rds自建資料庫的,禁止使用yum安裝mysql。要和線上版本一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26909803/viewspace-2649305/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 正則匹配規則2
- url規則
- makefile規則
- ESlint規則EsLint
- canvas非零繞組規則與奇偶規則Canvas
- 正則匹配規則記錄
- firewalld:direct規則
- URule規則引擎
- 1、基本規則
- 任務規則
- IT職場規則
- git提交規則Git
- 正規表示式基本規則
- wireshark 過濾規則
- Protobuf編碼規則
- 移動端規則
- SQLServer CDC清理規則SQLServer
- ModSecurity 自建規則之路
- .NET RulesEngine(規則引擎)
- Laravel 自定義規則Laravel
- oracle undo分配規則Oracle
- Sentinel之流控規則
- 規則引擎模式 - upperdine模式
- nginx location匹配規則Nginx
- iptables防火牆規則防火牆
- .gitignore規則不生效Git
- htmlhint 規則詳解HTML
- Nginx 跳轉規則Nginx
- 開發 eslint 規則EsLint
- SCSS 巢狀規則CSS巢狀
- CSS規則物件概述CSS物件
- Wireshark過濾規則
- JSON 語法規則JSON
- JSON語法規則JSON
- KVC搜尋規則
- JavaScript this 繫結規則JavaScript
- drools執行String規則或執行某個規則檔案
- 第2-4-4章 規則引擎Drools規則屬性-業務規則管理系統-元件化-中臺元件化