为什么是 B+ 树?

相比二叉树,B+ 树高度低(通常 3~4 层可存亿级数据),所有数据都在叶子节点,范围查询只需遍历叶子链表,非常适合磁盘 I/O 场景。

聚簇索引 vs 二级索引

InnoDB 的主键索引即聚簇索引,叶子节点直接存放整行数据;二级索引叶子节点存储主键值,查询需要回表

覆盖索引(避免回表)

-- 为高频查询建联合索引,覆盖 SELECT 字段
CREATE INDEX idx_user_cover ON orders(user_id, status, created_at);

-- 此查询可走覆盖索引,无需回表
SELECT status, created_at FROM orders WHERE user_id = 123;

EXPLAIN 解读

重点关注 type(ref > range > index > ALL)、key、rows 和 Extra 字段中是否出现 Using filesort 或 Using temporary。