1.庫名、表名、欄位名必須使用小寫字母,並採用下劃線分割。
2.庫名、表名、欄位名禁止超過32個字元。
3.使用innodb儲存引擎。
4.庫名、表名、欄位名禁止使用mysql保留字。
5.禁止使用分割槽表。
6.建議使用unsigned儲存非負數值。
7.建議使用int unsigned儲存ipv4。
select inet_aton('209.207.224.40'); 3520061480select inet_ntoa(3520061480); 209.207.224.40
8.強烈建議使用tinyint來代替enum型別。
9.使用varbinary儲存大小寫敏感的變長字串或二進位制內容。
10.int型別固定占用4位元組儲存
11.區分使用datetime和timestamp。
如何使用timestamp的自動賦值屬性?
column1 timestamp default current_timestamp on updatecurrent_timestamp
b)只是自動初始化:
column1 timestamp default current_timestamp
c)自動更新,初始化的值為0:
column1 timestamp default 0 on update current_timestamp
d)初始化的值為0:
column1 timestamp default 0
12.所有欄位均定義為not null。
1.將大字段、訪問頻率低的字段拆分到單獨的表中儲存,分離冷熱資料。
2.禁止在資料庫中儲存明文密碼。
3.表必須有主鍵,推薦使用unsigned自增列作為主鍵。
4.禁止冗餘索引。
5.禁止重複索引。
6.不在低基數列上建立索引,例如「性別」。
7.合理使用覆蓋索引減少io,避免排序。select email,uid from user_email where uid=xx
,如果uid不是主鍵,適當時候可以將索引新增為index(uid,email),以獲得效能提公升。
8.用in代替or。sql語句中in包含的值不應過多,應少於1000個。
9.表字符集使用utf8,必要時可申請使用utf8mb4字符集。
10.用union all代替union。
11.禁止使用order by rand()。
12.建議使用合理的分頁方式以提高分頁效率。
select * from table order by time desc limit 10000,10;
這種分頁方式會導致大量的io,因為mysql使用的是提前讀取策略。
select * from table where time13.select只獲取必要的字段,禁⽌止使用select *。
14.sql中避免出現now()、rand()、sysdate()、current_user()等不確定結果的函式。
15.採用合適的分庫分表策略。例如千庫十表、十庫百錶等。
16.減少與資料庫互動次數,盡量採用批量sql語句。
a)insert ... on duplicate key updateb)replace intoc)insert ignore
d)insert into values()
17.拆分複雜sql為多個小sql,避免大事務。
18.對同乙個表的多次alter操作必須合併為一次操作。
alter table t add column b varchar(10);
然後增加索引:
alter table t add index idx_aa(aa);
正確的做法是:
alter table t add column b varchar(10),add index idx_aa(aa);
19.避免使用儲存過程、觸發器、檢視、自定義函式等。
20.禁止有super許可權的應用程式賬號存在。
21.不要在mysql資料庫中存放業務邏輯。
出處:
mysql 的開發規範 MySQL開發規範
一 基礎規範 1 使用innodb儲存引擎 2 資料庫字符集使用utf8,校對字符集使用utf8 general ci 3 所有表 欄位都盡量新增注釋 4 庫名 表名 欄位名使用小寫字母,禁止超過32個字元,須見名知意 5 非唯一索引以 idx 欄位1 欄位2 命名,唯一索引必須以 uniq 欄位1...
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.全表...