WHERE 搜索的列。JOIN 的外鍵列。BETWEEN、>、< 的列(索引有序)。ORDER BY/GROUP BY 的列。WHERE 條件高頻列。TEXT/BLOB 大字段(長度大、區分度低)。-- 1. CREATE INDEX CREATE INDEX idx_name ON table_name (col_list); -- 2. ALTER TABLE ALTER TABLE table_name ADD INDEX idx_name (col_list); -- 3. 建表時指定 CREATE TABLE table_name (..., INDEX idx_name (col_list));
SHOW INDEX FROM table_name;
| 類型 | 關鍵字 | 示例 |
|---|---|---|
| 主鍵 | PRIMARY KEY | ALTER TABLE t ADD PRIMARY KEY (col) |
| 唯一 | UNIQUE KEY | ALTER TABLE t ADD UNIQUE (col) |
| 全文 | FULLTEXT | ALTER TABLE t ADD FULLTEXT (col) |
| 普通 | INDEX | ALTER TABLE t ADD INDEX idx_name (col) |
| 多列/聚簇 | INDEX (col1,col2,col3) | ALTER TABLE t ADD INDEX idx_abc (a,b,c) |
ALTER TABLE t DROP PRIMARY KEY, ADD PRIMARY KEY (col_a, col_b);
索引是「查詢加速器、寫入剎車、空間佔用者」。根據業務讀寫比、基數、字段類型、查詢模式科學選擇,定期 ANALYZE TABLE 更新統計信息,避免過度索引。