遇到效能瓶頸需從這四個維度系統調優,而非單點突破。
TINYINT 別用 SMALLINT,能用 VARCHAR(10) 別用 VARCHAR(100)。TINYINT(1B) → SMALLINT(2B) → MEDIUMINT(3B) → INT(4B) → BIGINT(8B)
UNSIGNED 可擴展正數範圍(如 TINYINT UNSIGNED: 0~255)
FLOAT/DOUBLE:非精確,CPU 硬體支援,速度快。DECIMAL:精確,適合金額。大數據量時可考慮 BIGINT 存儲「分/厘」整數(金額 × 100/10000)提升計算速度。CHAR:定長,尾部空格會被移除,適合極短固定長度(如 Y/N、MD5)。VARCHAR:變長,1-2 位元組儲存長度。VARCHAR(1000) 初插短值後更新長值易產生頁分裂碎片。VARCHAR(10) 與 VARCHAR(1000) 實際儲存空間相同,但後者排序、臨時表時消耗更多記憶體,故「越小越好」原則依然成立。BLOB:二進制,無字符集/排序規則。TEXT:有字符集/排序規則。能用記事本開啟的存 TEXT,其餘存 BLOB。TIMESTAMP:4 字節,儲存 1970 至今秒數,範圍至 2038 年,空間效率高。DATETIME:8 字節,儲存實際日期時間值,範圍更大。DATETIME。