無論是免費空間還是大型電商平台,合理的表結構設計與空間利用都是核心競爭力。MySQL 數值型別分為三大類:整數類、浮點類、定點類(DECIMAL/NUMERIC),各有適用場景。
DECIMAL 與 NUMERIC 實際以字串形式儲存,每位數字(含小數點)佔 1 位元組,空間佔用較大。但其最大優勢是小數位數固定、運算不失真,極適合「價格」、「金額」等對準確度要求極高的財務欄位。
FLOAT(4 位元組):可表示約 1.17E-38 的極小絕對值DOUBLE(8 位元組):精度更高,可達 2.22E-308優勢在於極高精度,但民用級應用極少需要此精度。作者坦言從未實際使用過這兩類型。
| 型別 | 儲存空間 | 無符號最大值 | 典型適用場景 |
|---|---|---|---|
| TINYINT | 1 位元組 | 255 | 年齡、狀態碼、小範圍枚舉 |
| SMALLINT | 2 位元組 | 65,535 | 遊戲技能值、中等範圍計數 |
| MEDIUMINT | 3 位元組 | 16,777,215 | 千萬級自增 ID(每行省 1 Byte,千萬行省 10 MB+) |
| INT | 4 位元組 | 4,294,967,295 | 通用自增 ID、大多數業務主鍵 |
| BIGINT | 8 位元組 | 18,446,744,073,709,551,615 | 極大量級分散式 ID、高併發序號 |
「夠用就好,越小越好」 — 選擇能覆蓋業務最大值、且佔用空間最小的型別。
UNSIGNED 翻倍正數範圍BIGINT — 空間與索引效能雙重浪費MEDIUMINT,<42 億用 INT某表預估 1,600 萬行,若主鍵用 INT(4B)改為 MEDIUMINT(3B),單表節省 ~16 MB 儲存空間,索引體積同步縮減,查詢與寫入效能雙贏。