WHERE YEAR(d)<2007 → WHERE d<'2007-01-01'MEDIUMINT 代替 INTusername(6)WHERE a=1 OR b=2 → WHERE a=1 UNION SELECT * FROM t WHERE b=2type、key_len、rows、Extra測試表 users(37,365 行),字段 username 加索引 username(6) 前後對比:
| SQL | 無索引(秒) | 有索引(秒) | 提升 |
|---|---|---|---|
LIKE '%許%' | 0.54 | 0.34 | 37% |
LIKE '許%' | 0.53 | 0.06 | 89% |
LIKE '%許' | 0.51 | 0.31 | 39% |
結論:前綴匹配 LIKE 'xxx%' 受益最大,索引效果顯著;模糊匹配提升有限。
LEFT JOIN ON / WHERE 條件列優化無銀彈,需「索引設計 + SQL 改寫 + 參數調優 + 架構演進」組合拳。定期用 EXPLAIN 掃描慢查詢,建立優化閉環。