MySQL 資料庫開發規範

2021-09-21 16:47:52 字數 2470 閱讀 6518

一、表:

單個表的字段數控制在 20個以下,最好不超過50個

單個表不超過20個char 或varchar 字段

單錶不超過50個純int欄位

拒絕大sql,大事務,批量操作

二、字段型別定義:

字段型別選取原則:

1、選取合適範圍的資料型別

2、只取正值的數值型別,新增 unsigned屬性 

3、 固定長度的字串採用char()型別

4、 在符合資料使用前提下,盡量使用 not null

5 、不用書寫數值型別儲存的字元個數,比如只使用 int(只針對數值型別)

6、text型別強制生成磁碟臨時表,儲存上浪費空間,必須使用的話,需考慮拆分到單獨的表中。

7、不在資料庫中儲存

8、避免使用保留字命名

使用案例:

字段                               屬性

`id`                  unsigned not null (僅當數值超過42億時才使用bigint型)

`color_id`             int  unsigned          

`user_id`              int  unsigned not null

`monster_id`           int  unsigned not null

`monster_family_id`     tinyint  unsigned  not  null

`monster_pattern_id`    mediumint   unsigned  not  null

`is_lighted`             tinyint

型別定義

取值範圍

儲存需求

tinyint [unsigned][zerofill]

帶符號:128--127 

無符號:0---128

1個位元組

smalint [unsigned] [zerofill]

帶符號:-32768-32767 

無符號:0--65535

2個位元組

mediumint[unsigned] [zerofill]

帶符號:88388608--8388607 

無符號:0--16777215

3個位元組

int [unsigned] [zerofill]

帶符號:2147683648--2147683647 

無符號:0-4294967295

4個位元組

bigint [unsigned] [zerofill]

帶符號:9223372036854775808--9223372036854775807 

無符號:0--18446744073709551615

8個位元組

char(m)(m是字元長度)

m個字元長度(0與字符集有關

varchar(m)(m字元長度)

三、鍵和索引的設計:

1、  命名規範:index_欄位名1[_欄位名2]

2、  避免對字串型別新增索引,否則的話    採用enum 或set型別

3、  只給最常用的查詢新增索引

4、  避免使用重複或者多餘索引

5、  對於字元索引,可以以前n個字段作為索引  (防止innodb聚集索引帶來的       負面)

6、不索引大型字段(有很多字元)

7、不索引常用的小型表

8、不在索引列進行資料運算或函式運算(會導致無法使用索引,或者全表掃瞄)

9、對於自增列或全域性id做主鍵,按自增順序插入值

四、索引使用原則:

1、匹配全部字段

2、匹配索引左邊字首

3、匹配索引列範圍值

4、精確一部分索引,並且匹配另乙個欄位的某個範圍

5、對索引字段插入資料時,按照順序插入

6、盡量不使用外來鍵,產生額外開銷,並且使逐行操作,易出現死鎖現象

五:dml語句

1、盡量避免使用子查詢(使用的話需要確認)

2、where條件中必須使用和過濾字段完全一致的資料型別,避免使用函式轉換欄位的格式

3、 對於復合索引,語句必須遵循『最左字首』,禁止直接跳過字首最左邊字段。

4、對於order  by  group by 子句時 盡量引用索引字段。(如能達到mysql為排序和查詢行使用同樣的索引,引用where中的索引字段

5、select   *  from 表 避免使用。

6、顯示的 使用索引 使用 use index()關鍵字

7、sql語句應盡量簡單(乙個sql只能在乙個cpu運算,命中率高,減少鎖定時間,可以用上多個cpu)

8、利用count(*) 進行彙總時,把null排除在外,資源開銷大,盡量不用。

9、對於非實時統計資料,盡量使用單獨統計的表,定期重算

10、不要再程式端顯示加鎖。

11、insert 語句書寫必須加 欄位名稱

MYSQL資料庫開發規範

自己總結的mysql開發規範,夠用就行了。1 表 1.1 表必須要有主鍵,主鍵使用自動遞增,型別為int。1.2 表名使用有意義的英文單詞,可用下劃線分割。如需使用縮寫時,不可使用意義不明的縮寫。1.3 需要多表join的字段,資料型別保持絕對一致。1.4 字段命名時需要加上表名,確保所有表中的字段...

Mysql 資料庫開發規範

一 基礎規範 1 必須使用innodb儲存引擎 解讀 支援事務 行級鎖 併發效能更好 cpu及記憶體快取頁優化使得資源利用率更高 2 必須使用utf8字符集 解讀 萬國碼,無需轉碼,無亂碼風險,節省空間 3 資料表 資料字段必須加入中文注釋 解讀 n年後誰知道這個r1,r2,r3欄位是幹嘛的 4 禁...

MySQL資料庫開發規範

為了最大限度保證合生通mysql資料庫設計編碼規劃化,使開發可以寫出高質量查詢語句。制定本資料庫開發設計規範。適用的人員包括 使用mysql資料庫的研發人員 適用資料庫版本 mysql5.6及以後 適用於資料庫名 物件名如表 字段 索引 儲存過程,函式等的命名約定。3.1表名 3.1.1規則 命名規...