mysql 表設計小tips

2021-10-24 05:37:19 字數 1240 閱讀 6962

命名規範

1.普通索引以idx_col1_col2命名,唯一索引以uk_col1_col2命名

2.庫名、表名、欄位名支援最多64個字元,但為了統一規範、易於辨識以及減少傳輸量、禁止超過32個字元

3.臨時庫、表名須以tmp加日期為字尾

字符集規範

4.utf8字符集儲存漢字占用3個位元組,儲存英文本元占用乙個位元組

5.校對字符集使用預設的 utf8_general_ci;連線的客戶端也必須使用utf8mb4

庫表規範

6.單表字段數上限30左右

7.主鍵盡量採用自增方式,innodb表實際是一棵索引組織表,順序儲存可以提高訪問效率,充分利用磁碟空間

8.禁止使用外來鍵參考,即使2個表的字段有明確的外來鍵參考關係,也不使用 foreign key,影響效能

9.單錶資料量控制在3000w以內

字段規範

10.對於長度基本固定的列,如果該列恰好更新又特別頻繁,適合char;

11.varchar雖然儲存變長字串,但不可太小也不可太大.utf8最多能存21844個漢字或65532個英文

12.避免使用text和blob,盡可能把text/blob拆到另乙個表中

13.使用tinyint來代替 enum和boolean;tinyint使用1個位元組,一般用於status,type,flag的列

14.int使用固定4個位元組儲存(編譯器定義),int(11)與int(4)只是顯示寬度的區別

15.datetime 和 timestamp型別所佔的儲存空間不同,前者8個位元組,後者4個位元組,這樣造成的後果是兩者能表示的時間範圍不同;前者範圍為1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,後者範圍為 1970-01-01 08:00:01 到 2038-01-19 11:14:07,所以 timestamp 支援的範圍比 datatime 要小

優先使用timestamp(範圍小,空間小),datetime(範圍大,空間大)也沒問題

索引規範

16.如果是索引字段,一定要定義為not null ;因為null值會影響cordinate統計,影響優化器對索引的選擇

17.單張表的索參數量控制在5個以內

18.主鍵是和資料放在一起的聚集索引,普通索引最終指向的是主鍵位址,所以把主鍵做最後一列是多餘的;最好是不要使用主鍵作為索引

mysql設計技巧 MySQL庫表設計小技巧

前言 在我們專案開發中,資料庫及表的設計可以說是非常重要,我遇到過很多庫表設計比較雜亂的專案,像表名 欄位名命名混亂 字段型別設計混亂等等,此類資料庫後續極難維護與拓展。我一直相信只有優秀的庫表設計才能發揮出mysql最大的效能,前面有篇文章也分享了資料庫的使用規範,本篇文章主要講幾個庫表設計的小技...

js小tips和小筆記

a 會自動把字串 如果 變為number型別 如 var a 1 b 1 a 1 a 2a b 1 b 2b arr.slice startindex,endindex 的結果是得到乙個 startindex,endindex 區間內的陣列,arr本身不變,slice是個純函式 arr.splice...

互動細節設計的四個小 tips

在移動網際網路時代發展的今天,場景思維對於 使用者體驗設計 的影響不言而喻。大道理在此不多說,大家都懂。在這裡,盟主和大家分享乙個近期手上的設計task中總結出來的幾個互動設計的小tips。這些都是非常細節的設計小點,但是運用在使用者使用場景裡面能傳遞更加友好的資訊。因為不清楚兩大巨頭在這一功能點設...