正確的欄位型別能大幅提升資料庫效能與擴展性。選型時請從以下五大維度綜合評估:
ALTER TABLE擴展。TINYINT)> 大型別(BIGINT)CHAR)vs 可變長(VARCHAR)在不同引擎表現不同OPTIMIZE TABLEBLOB/TEXT需指定前綴長度)。NOT NULL:避免查詢時判斷NULL,加速檢索;節省位圖空間。BINARY vs 非BINARY)、排序規則(COLLATE)。| 場景 | 推薦型別 | 理由 |
|---|---|---|
| 布林旗標 | TINYINT(1) UNSIGNED NOT NULL | 1 byte,數值運算最快 |
| 自增主鍵 | INT UNSIGNED AUTO_INCREMENT 或 BIGINT | 預留空間,避免耗盡 |
| 金額/財務 | DECIMAL(12,2) | 精確十進位,無浮點誤差 |
| 短定長字串(如ISO代碼) | CHAR(3) | 固定長,MyISAM效能佳 |
| 變長文字(名稱、描述) | VARCHAR(255) / TEXT | 節省空間,InnoDB無固定長優勢 |
| 日期(無時間) | DATE | 3 bytes,範圍1000-9999年 |
| 日期時間 | DATETIME (8B) 或 TIMESTAMP (4B) | TIMESTAMP自動更新特性視業務而定 |