NOT NULL,用 0、-1、空字串作預設值。TINYINT < SMALLINT < INT < BIGINT;CHAR 固定長、VARCHAR 變長。小類型減少磁碟 I/O、記憶體佔用、CPU 快取命中率高。但預留擴展空間,避免日後 ALTER TABLE 重建鎖表。character_set_client)與表字符集不一致,MySQL 會隱式轉換,導致索引失效、CPU 浪費。utf8mb4,確認 SET NAMES utf8mb4 或連線參數 charset=utf8mb4。utf8mb4 字元最多 4 bytes,影響 VARCHAR 最大長度、索引長度限制(767 bytes/3072 bytes)。WHERE 時 COUNT(*) 極快(直接讀表統計行數)。WHERE 也需全表掃描(MVCC 可見性檢查),較慢。COUNT(col) 若欄位 NOT NULL,等同 COUNT(*);若可為 NULL,需掃描過濾 NULL。WHERE 時:建立覆蓋索引(含 WHERE 欄位 + 計數欄位)才能索引掃描。EXPLAIN 估算行數。IN/EXISTS 相關子查詢)優化較弱,常退化為全表掃描。JOIN(INNER JOIN、LEFT JOIN),確保被驅動表關聯欄位有索引。UNION 預設去重 + 排序,資源消耗大。UNION ALL 避免排序去重,速度提升數倍。UNION ALL,效果相同但更快。slow_query_log,針對高耗時 SQL 優化。EXPLAIN 驗證執行計畫(type、key、rows、Extra)。Handler_* 狀態變數。查詢優化無銀彈,但遵循「小類型、統一字符集、COUNT 摘要表、子查詢轉 JOIN、UNION ALL 替代 UNION」五大法則,配合執行計畫分析與慢查詢監控,能解決 80% 以上的效能問題。