MySQL 索引

InnoDB 使用 B+ 树索引,叶子节点存数据,非叶子节点只存键值。

常见类型

聚簇索引,叶子节点即数据行。
叶子节点存主键值,回表才能取到整行。
遵循最左前缀原则。

示例

-- 联合索引 (a, b, c)
CREATE INDEX idx_abc ON t (a, b, c);

-- 能走索引: a、a+b、a+b+c
-- 不能单独走: b、c
为什么不建议 SELECT *
会破坏覆盖索引,导致回表,且传输多余字段。