一、表:
單個表的字段數控制在 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規則 命名規...