理解索引底層結構是設計高效索引的前提。InnoDB 使用 B+Tree(B-Tree 變種),葉子節點鏈表掃描支援範圍查詢,非葉子僅存鍵值導航。
Extra: Using index。INDEX(a,b,c) 服務 a/a,b/a,b,c;列順序按**區分度降序**(基數大→小)或**查詢頻率/範圍列靠右**。ANALYZE TABLE 更新統計信息,配合 pt-duplicate-key-checker 清理重複/冗餘索引。DROP INDEX → LOAD DATA → CREATE INDEX 或 SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0; 導入後重建。INDEX(name(10)) 或哈希索引 INDEX(crc32_col)。EXPLAIN SELECT ... -- type=ref/range, key=idx_xxx, key_len 合理, rows 小, Extra=Using index SHOW INDEX FROM tbl; -- Cardinality 基數越大越好 ANALYZE TABLE tbl; -- 更新統計信息