PROCEDURE ANALYSE() 獲取建議。NOT NULL,利於索引。CHAR)比變長(VARCHAR)略快,但空間換時間需權衡。EXPLAIN 驗證,ANALYZE TABLE 更新統計信息。WHERE/ORDER BY/GROUP BY/JOIN 涉及列。log-slow-queries、long_query_time)發現優化目標。WHERE col < 4/2 用索引,WHERE col*2 < 4 失效。YEAR(date_col)<1990 → date_col<'1990-01-01'。LIKE 禁用前導通配符:LIKE 'abc%' 用索引,LIKE '%abc' 全掃。STRAIGHT_JOIN 強制聯結順序。FORCE INDEX 強制指定索引。WHERE int_col='5' 導致索引失效。JOIN:SELECT a.id, (SELECT MAX(created) FROM posts WHERE author_id=a.id) FROM authors aSELECT a.id, MAX(p.created) FROM authors a JOIN posts p ON a.id=p.author_id GROUP BY a.idON DUPLICATE KEY UPDATE 替換「查重再插/更新」。| 列 | 含義 | 理想值 |
|---|---|---|
| type | 訪問類型 | system > const > eq_ref > ref > range > index > ALL |
| key | 實際用索引 | 非 NULL |
| key_len | 索引使用長度 | 越短越好 |
| rows | 預估掃描行數 | 越小越好 |
| Extra | 額外信息 | 無 Using filesort/Using temporary |
索引優化是「建對索引 + 用對索引 + 改寫 SQL + 監控慢查詢」的系統工程,需持續迭代。