慣例符號
字串類型儲存開銷
| 類型 | 儲存需求 | 備註 |
| VARCHAR(M) | L+1 bytes(L≤M,M≤65,535) | M 過大增加記憶體計算開銷 |
| CHAR(M) | M bytes(M≤255) | 定長,空間換速度 |
| BINARY(M) | M bytes | 二進位定長 |
| VARBINARY(M) | L+1 bytes | 二進位變長 |
| ENUM | 1-2 bytes | 值<255 用 1 byte,否則 2 bytes;修改需 DROP+CREATE |
| SET | 1-8 bytes | 成員數 1-8→1B, 9-16→2B, 17-24→3B, 25-32→4B, 33-64→8B |
整數類型
| 類型 | 位元 | Bytes |
| TINYINT | 8 | 1 |
| SMALLINT | 16 | 2 |
| MEDIUMINT | 24 | 3 |
| INT | 32 | 4 |
| BIGINT | 64 | 8 |
浮點與定點數
| 類型 | Bytes | 精度 |
| FLOAT | 4 | 單精度,約 6 位十進位有效數字 |
| DOUBLE | 8 | 雙精度,約 13 位 |
| DECIMAL(M,D) | M+2 | 字串儲存,精確計算,小數點與符號各佔 1 byte |
IEEE 754 浮點數儲存結構(補充)
| 項目 | Float (32-bit) | Double (64-bit) |
| 符號位 (S) | 1 bit | 1 bit |
| 指數位 (E) | 8 bits | 11 bits |
| 尾數位 (M) | 23 bits | 52 bits |
| 偏移量 | 127 | 1023 |
範例:123.456 → 二進位科學標記法 → 1.11101101110100101111001 × 2^6 → E=133 (10000101)、M=尾數 23 位。
選型建議
- 金額、精確計算 →
DECIMAL
- 科學計算、容忍微小誤差 →
DOUBLE 優於 FLOAT
- 定長代碼、MD5 等 →
CHAR/BINARY
- 變長文本、不確定長度 →
VARCHAR,M 設實際上限即可
- 狀態、性別等枚舉值固定 →
ENUM(內部當數值處理,速度快)