<1>.索引1.單錶索引不超過5個;
2.單個索引不超過5列;
3.innodb主鍵推薦自增列;
主鍵不改被修改;
字串不應該做主鍵;
若不指定主鍵,innodb會使用唯一且非空值索引代替;
4.若是復合索引,區分度大的前置;
5.核心sql優先考慮索引;
6.區分度的的字段前置;
7.避免冗餘或重複索引:合理建立聯合索引:
index(a,b,c)相當於:index(a),index(a,b),index(a,b,c)
8.不在低基數列建索引,如性別;
9.不在索引列進行數學、函式運算;
10.盡量不要使用外來鍵;
11.不使用%前導查詢,如like"%***",無法使用索引;
12.不使用反響查詢,如not in、not like,無法使用索引;
13.盡量要有主鍵。
<2>.欄位1.禁止使用text、blog型別;
2.將字元轉化為數字;
3.使用tinyint代替enum型別;
4.字段長度盡量按照實際進行分配,不要隨意給乙個大容量;
5.如果可能,所有字段盡量not null;
6.使用unsigned儲存非負整數;
7.int型別固定占用4個位元組儲存;
8.使用timestamp儲存時間;
因為timestamp使用4位元組,datetime使用8位元組,同時timestamp具有自動複製以及自動更新的特性。
9.禁止在資料庫中儲存明文密碼;
<3>.sql1.禁止使用儲存過程、觸發器、檢視等;讓資料庫做最擅長的事,降低業務耦合度;
2.避免使用大表的join;
3.避免資料庫中進行數**算,數**算和邏輯判斷,無法使用索引;
4.減少與資料庫的互動次數;
5.拒絕大sql,拆分成小sql,充分使用query cache,充分利用多喝cpu.
6.使用in 代替 or,in 的值不超過1000個;
7.禁止使用order by rand();
因為使用order by rand() 會將資料從磁碟讀取進行排序,耗費大量io和cpu,可以再程式中獲取乙個rand值,然後通過資料庫中獲取對應的值。
8.使用union all 而不是 union.
9.禁止單條sql語句同時更新多個表(跨表更新);
10.不使用select*;
11.禁止使用test庫;
<4>.行為規範----摘自京東內部規範。1.禁止super許可權應用賬號存在;
2.對單錶的多次order必須合併為一次操作;
3.不在業務高峰期批量更新、查詢資料庫。
mysql 使用規範 MySQL使用規範
一 表設計類 強制類規範 1.建立表的儲存引擎必須是innodb。2.每個表必須顯式的指定乙個主鍵。3.不允許使用聯合主鍵。4.不允許使用外來鍵。5.不允許存在和主鍵重複的索引。6.自增長字段必須是主鍵或唯一索引。7.不允許在資料庫中儲存諸如,影像之類的二進位制資料。8.不允許使用text型別字段 ...
mysql 使用規範 MySQL使用規範
mysql使用規範 一 核心規範 www.2cto.com 1.不用資料庫做運營,如md5 order by rand 2.控制單錶資料量 a 單錶純int不超過1000w b 單錶含char不超過500w c 單庫不超過300 400個表 3.表字段數少而精 a 影響因素 i.io高效 ii.全表...
mysql使用規範 MySQL使用規範 MySQL
bitscn.com mysql使用規範 一 核心規範 1.不用資料庫做運營,如md5 order by rand 2.控制單錶資料量 a 單錶純int不超過1000w b 單錶含char不超過500w c 單庫不超過300 400個表 3.表字段數少而精 a 影響因素 i.io高效 ii.全表遍歷...