CHAR 最快VARCHAR 省空間減 I/OSELECT * FROM t PROCEDURE ANALYSE(16,256); — 取值 ≤16 且長度 ≤256 才建議 ENUMOPTIMIZE TABLE (僅 MyISAM 有效)mysqldump → DROP TABLE → 重建 → 導入OPTIMIZEhash_val CHAR(32) 存 MD5(blob_col),索引該欄位SELECT * FROM t WHERE hash_val=MD5(?) AND blob_col=?SELECT * 不傳大物件對超長字串/BLOB 精確匹配:
CRC32()/MD5()/SHA1() 存入 INT UNSIGNED/CHAR(32)/CHAR(40)WHERE hash_col=CRC32('long_string')=、IN,不適用範圍查詢 (<、>、BETWEEN)| 場景 | 推薦類型 | 關鍵屬性 |
|---|---|---|
| 狀態碼、性別、類別 | ENUM | NOT NULL |
| 多選標籤 | SET | |
| 金額、精確小數 | DECIMAL(10,2) | 避免浮點誤差 |
| 超長文本、日誌 | TEXT/LONGTEXT | 垂直拆分+散列索引 |
| 二進制圖片、檔案 | BLOB/LONGBLOB | 同上,或存檔案系統只存路徑 |
| 主鍵 ID | BIGINT UNSIGNED | AUTO_INCREMENT |