MySQL資料庫開發的三十六條軍規

2021-07-08 13:45:45 字數 2463 閱讀 9006

摘錄自:

一、核心軍規

1、盡量不在資料庫做運算

2、控制單錶資料量

3、保持表身段苗條

4、平衡正規化與冗餘

5、拒絕3b(big sql && big transaction && big batch)

二、欄位類軍規

6、用好數值字段型別

7、將字元轉化為數字

數字型vs字串型索引

舉例:用無符號int儲存ip,而非char(15)

8、優先使用enum或set

enum占用1位元組,轉為數值運算

set視節點定,最多占用8位元組

比較時需要加『 單引號(即使是數值)

9、避免使用null欄位

很難進行查詢優化

null列加索引,需要額外空間

含null復合索引無效

舉例:

achar(32) default null

bint(10) not null

cint(10) not null default 0

10、少用並拆分text/blob

text型別處理效能遠低於varchar

強制生成硬碟臨時表

浪費更多空間

varchar(65535)==>64k(注意utf-8)

盡量不用text/blob資料型別

若必須使用則拆分到單獨的表

11、不在資料庫裡存

三、索引類軍規

12、謹慎合理新增索引

能不加的索引盡量不加

綜合評估資料密度和資料分布

最好不超過字段數20%

結合核心sql優先考慮覆蓋索引

13、字元字段必須建字首索引

pinyinvarchar(100) default null comment 『小區拼音』, keyidx_pinyin(pinyin(8)),

) engine=innodb

14、不在索引列做運算

不在索引列進行數**算或函式運算

無法使用索引

導致全表掃瞄

15、自增列或全域性id做innodb主鍵

16、盡量不用外來鍵

四、sql類軍規

17、sql語句盡可能簡單

拒絕大sql,拆解成多條簡單sql

18、保持事務(連線)短小

19、盡可能避免使用sp/trig/func

20、盡量不用select *

21、改寫or為in()

同一字段,將or改寫為in() • or效率:o(n)

in效率:o(log n)

當n很大時,or會慢很多

注意控制in的個數,建議n小於200

21、改寫or為union

22、避免負向查詢和% 字首模糊查詢

負向查詢:not、!=、<>、!<、!>、not exists、not in、 not like等

%字首查:b+ tree,使用不了索引,導致全表掃瞄

23、減少count(*)

結論:

count(*)=count(1)

count(0)=count(1)

count(1)=count(100)

count(*)!=count(col)

24、limit高效分頁

推薦:select * from table where id>=123 limit 11

25、用union all而非union

若無需對結果進行去重,則用union all

26、分解聯接保證高併發

27、group by去除排序

無需排序:order by null

特定排序:group by desc/asc

28、同資料型別的列值比較

原則:數字對數字,字元對字元

29、load data導資料

30、打散大批量更新

31、know every sql

五、約定類軍規

32、隔離線上線下

33、禁止未經dba確認的子查詢

34、永遠不在程式端顯式加鎖

35、統一字符集為utf-8

統一字符集:utf8

校對規則:utf8_general_ci

亂碼:set names utf8

36、統一命名規範

庫表等名稱統一用小寫

索引命名預設為「idx_欄位名」

庫名用縮寫,盡量在2~7個字母

注意避免用保留字命名

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 資料庫開發規範

一 表 單個表的字段數控制在 20個以下,最好不超過50個 單個表不超過20個char 或varchar 字段 單錶不超過50個純int欄位 拒絕大sql,大事務,批量操作 二 字段型別定義 字段型別選取原則 1 選取合適範圍的資料型別 2 只取正值的數值型別,新增 unsigned屬性 3 固定長...